Помогите плиз, почему у меня не работает эта программа
книга ЯЗЫК С Б.В. Керниган, Д.М. Ричи .#define eof -1
#define maxline 1000 /* maximum input
line size */
main() /* find longest line */
{
int len; /* current line length */
int max; /* maximum length seen so far */
char line[maxline]; /* current input line */
char save[maxline]; /* longest line, saved */max = 0;
while ((len = getline(line, maxline)) > 0)
if (len > max) {
max = len;
copy(line, save);
}
if (max > 0) /* there was a line */
printf("%s", save);
}
getline(s,lim) /* get line into s,return length */
char s[];
int lim;
{
int c, i;for(i=0;i<lim-1 && (c=getchar())!=eof && c!='\n';++i)
s[i] = c;
if (c == '\n') {
s[i] = c;
++i;
}
s[i] = '\0';
return(i);
}copy(s1, s2) /* copy s1 to s2;
assume s2 big enough */
char s1[], s2[];
{
int i;i = 0;
while ((s2[i] = s1[i]) != '\0')
++i;
}
>Помогите плиз, почему у меня не работает эта программа
>книга ЯЗЫК С Б.В. Керниган, Д.М. Ричи .Не мешало бы пояснить, как она не работает...
>#define eof -1Это можно не определять и использовать EOF из stdio.h
> main() /* find longest line */
int main(int argc, char *argv[])
Также, перед использованием ф-ии getline() и copy() нужно их объявить явно или использовать прототип:
int getline(char s[], int lim);
void copy(char s1[], char s2[]);> getline(s,lim) /* get line into s,return length */
> char s[];
> int lim;int getline(char s[], int lim)
> for(i=0;i<lim-1 && (c=getchar())!=eof && c!='\n';++i)
Вы используете getchar() из стандартной библиотеки, а занечит должны подключить файл stdio.h
> copy(s1, s2) /* copy s1 to s2;
>
> assume s2 big enough */
> char s1[], s2[];void copy(char s1[], char s2[])
Это то что бросилось в глаза с первого взгляда. Исправьте это и, если не будет работать, то пожалуйста приведите также сообщение с ошибками -- так нам будет легче вам помочь. (потому что телепаты всё ещё в отпуске ;)) )
>Это то что бросилось в глаза с первого взгляда. Исправьте это и,
>если не будет работать, то пожалуйста приведите также сообщение с ошибками
>-- так нам будет легче вам помочь. (потому что телепаты всё
>ещё в отпуске ;)) )
хм... эта программа из книги как я и выше написал книга "ЯЗЫК С" Б.В. Керниган, Д.М. Ричи
программа компилиться без ошибок, но сама программа не работает, я просто не очень разбираюсь в "си" так как начал изучать, но думаю программа виснит в каком то условии
>но думаю программа виснит в каком то условииЭто хороший повод для вас познакомиться с отладчиком gdb ;-))
>>Это то что бросилось в глаза с первого взгляда. Исправьте это и,
>>если не будет работать, то пожалуйста приведите также сообщение с ошибками
>>-- так нам будет легче вам помочь. (потому что телепаты всё
>>ещё в отпуске ;)) )
>хм... эта программа из книги как я и выше написал книга "ЯЗЫК
>С" Б.В. Керниган, Д.М. Ричи
>программа компилиться без ошибок, но сама программа не работает, я просто не
>очень разбираюсь в "си" так как начал изучать, но думаю программа
>виснит в каком то условиивы так и не пояснили - как она не работает..
по идее, если вы вместо ввода новой строки просто нажмёте Ctrl-D (eof),
она напечатает строку и завершится. То есть завешение программы - enter,Ctrl-d