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

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
begem0t
Сообщения: 3
Зарегистрирован: 05 июн 2005, 16:57

вот программа из книжки Кернигана "Язык программирования Си" (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; 
}
вот скриншот даже
Изображение
RevYurMIh
Сообщения: 20
Зарегистрирован: 30 май 2005, 01:36
Откуда: ry_@tut.by

int getline(char line[], int MAXLINE);
MAXLINE - это же константа
пиши так:
int getline(char line[], int );
или так:
int getline(char line[], int lim);
Kill yourself!
begem0t
Сообщения: 3
Зарегистрирован: 05 июн 2005, 16:57

получается в книге ляп! хорошенькое начало...
спасибо за ответ!
begem0t
Сообщения: 3
Зарегистрирован: 05 июн 2005, 16:57

это какойто шизоидный пример.... очень долго соображал что там к чему. Когда сообразил и откомпилировал - оказалось что прога не работает :)
скармливаю ей её же текст - ничего не печатает
проверяю через printf переменную max = 33
а longest не печатает почемуто
что еще не так в коде?
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

ошибка в том что в функции копи ты не инициализируешь i
то есть надо строчка ш=0 в самом начале
В SAD - все в SAD.
Ответить