Страница 1 из 1

Помогите найти ошибку в коде Си

Добавлено: 05 июн 2005, 17:07
begem0t
вот программа из книжки Кернигана "Язык программирования Си" (3-е издание)
говорит ошибка в 3 строке
syntax error before numeric constant

что ему не нравится?

Код: Выделить всё

#include <stdio.h> 
#define MAXLINE 1000 /* максимальный размер вводимой строки */ 
int getline(char line[], int MAXLINE); 
void copy(char to[], char from[]); 
/*Печать самой длинной строки*/ 
main() 
{ 
int len;/*длина текущей строки*/ 
int max;/*длина максимальной из просмотренных строк*/ 
char line[MAXLINE];/*текущая строка*/ 
char longest[MAXLINE];/*самая длинная строка*/ 
max=0; 
while((len=getline(line, MAXLINE))>0) 
if (len>max){ 
max=len; 
copy(longest, line); 
} 
if(max>0)/*была ли хоть одна строка?*/ 
printf("%s", longest); 
return 0; 
} 
/*getline: читаест строку в s, возвращает длину*/ 
int getline(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: копирует из 'from' в 'to' */ 
void copy(char to[], char from[]) 
{ 
int i; 
while((to[i]=from[i]) != '\0') 
++i; 
}
вот скриншот даже
Изображение

Добавлено: 05 июн 2005, 17:38
RevYurMIh
int getline(char line[], int MAXLINE);
MAXLINE - это же константа
пиши так:
int getline(char line[], int );
или так:
int getline(char line[], int lim);

Добавлено: 05 июн 2005, 18:58
begem0t
получается в книге ляп! хорошенькое начало...
спасибо за ответ!

Добавлено: 05 июн 2005, 21:29
begem0t
это какойто шизоидный пример.... очень долго соображал что там к чему. Когда сообразил и откомпилировал - оказалось что прога не работает :)
скармливаю ей её же текст - ничего не печатает
проверяю через printf переменную max = 33
а longest не печатает почемуто
что еще не так в коде?

Добавлено: 06 июн 2005, 12:22
Kolinus
ошибка в том что в функции копи ты не инициализируешь i
то есть надо строчка ш=0 в самом начале