Найти ошибку в коде из учебника Керниган и Ритчи - C (СИ)
Формулировка задачи:
В тексте книги написан такой код
Но в нём на мой взгляд ошибки со скобками и видимо что то ещё. Я немного подправил скобочки и вот что вышло
А при компиляции ругается на константу и от нее зависимое. Никак не могу понять, что с ней не так?
#include <stdio.h> #define MAXLINE 1000 /* максимальный размер вводимой строки */ int getline(char linef], int MAXLINE); void copy(char to[], char fromf]); /* печать самой длинной строки */ 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 && с != '\n'; ++i) s[i] = c; if (c == 'n'; { s[i] = c; ++i; } s[i] = '\0'; return i; } /* copy: копирует из 'from' в 'to'; to достаточно большой */ void copy(char to[], char from[]) { int i;i = 0; while ((to[i] = from[i]) != '\0') ++i; }
#include <stdio.h> #define MAXLINE 1000 /*максимальный размер вводимой строки*/ /*----------------объявление функций----------------*/ int getline(char linef[], int MAXLINE); void copy(char to[],char fromf[]); /*--------------------------------------------------*/ /*печать самой длинной строки*/ main() { int len; //длина текущей строки int max = 0 ; //длина максимальной из просмотренных строк char line[MAXLINE]; //текущая строка char longest[MAXLINE]; //самая длинная строка 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' ; to достаточно большой */ void copy(char to[],char from[]) { int i; i = 0; while ((to[i] = from[i]) != '\0') ++i; }
les.c:4:17: error: expected ‘;’, ‘,’ or ‘)’ before numeric constant
#define MAXLINE 1000 /*максимальный размер вводимой строки*/
^
les.c:6:31: note: in expansion of macro ‘MAXLINE’
int getline(char linef[], int MAXLINE);
^
les.c: In function ‘main’:
les.c:17:2: warning: passing argument 1 of ‘getline’ from incompatible pointer type [enabled by default]
while((len = getline(line, MAXLINE)) > 0 )
^
In file included from les.c:2:0:
/usr/include/stdio.h:678:20: note: expected ‘char ** __restrict__’ but argument is of type ‘char *’
extern _IO_ssize_t getline (char **__restrict __lineptr,
^
les.c:17:2: warning: passing argument 2 of ‘getline’ makes pointer from integer without a cast [enabled by default]
while((len = getline(line, MAXLINE)) > 0 )
^
In file included from les.c:2:0:
/usr/include/stdio.h:678:20: note: expected ‘size_t * __restrict__’ but argument is of type ‘int’
extern _IO_ssize_t getline (char **__restrict __lineptr,
^
les.c:17:2: error: too few arguments to function ‘getline’
while((len = getline(line, MAXLINE)) > 0 )
^
In file included from les.c:2:0:
/usr/include/stdio.h:678:20: note: declared here
extern _IO_ssize_t getline (char **__restrict __lineptr,
^
les.c: At top level:
les.c:28:5: error: conflicting types for ‘getline’
int getline(char s[], int lim)
^
In file included from les.c:2:0:
/usr/include/stdio.h:678:20: note: previous declaration of ‘getline’ was here
extern _IO_ssize_t getline (char **__restrict __lineptr,
Решение задачи: «Найти ошибку в коде из учебника Керниган и Ритчи»
textual
Листинг программы
int getline(char linef[], int MAXLINE);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д