Функция "getline" должна иметь прототип - C (СИ)
Формулировка задачи:
Минут 20 искал, но так и не смог найти, где допустил ошибки, а точнее допустили ошибки авторы книги.
1. ) expected - ) Ожидается. Указывает на 4-ю строку на скобку ) в определении функции.
2. Function 'getline' should have a prototype - Функция "getline" должна иметь прототип. Указывает на 11 строку на l в слове line.
Код программы:
Повторяю, программа из книги, поэтому не имею понятия, что они не так сделал.
#include<stdio.h> #include<conio.h> #define MAXLINE 1000 int getline(char line[],int MAXLINE); void copy(char to[],char from[]); main() {clrscr(); int len,max; char line[MAXLINE],longest[MAXLINE]; max=0; while((len=getline(line,MAXLINE))>0) if(len>max){ max=len; copy(longest,line);} if(max>0) printf("%s",longest); getchar(); return 0; } int getline(char s[],int lim) { FILE *fp; int c,i; fp=fopen("C:\\c.txt","r"); for(i=0;i<lim-1&&(c=getc(fp))!=EOF&&c!='\n';++i) s[i]=c; if(c='\n'){ s[i]=c; ++i;} s[i]='\0'; return i; } void copy(char to[],char from[]) { int i; i=0; while((to[i]=from[i])!='\0') ++i; }
Решение задачи: «Функция "getline" должна иметь прототип»
textual
Листинг программы
#include<stdio.h> #include<conio.h> #define MAXLINE 1000 int getline(char s[],int lim); void copy(char to[],char from[]); main() {clrscr(); int len,max; char line[MAXLINE],longest[MAXLINE]; max=0; while((len=getline(line,MAXLINE))>0) if(len>max){ max=len; copy(longest,line);} if(max>0) printf("%s",longest); getchar(); return 0; } int getline(char s[],int lim) { FILE *fp; int c,i; fp=fopen("C:\\c.txt","r"); for(i=0;i<lim-1&&(c=getc(fp))!=EOF&&c!='\n';++i) s[i]=c; if(c='\n'){ s[i]=c; ++i;} s[i]='\0'; fclose(fp); return i; } void copy(char to[],char from[]) { int i; i=0; while((to[i]=from[i])!='\0') ++i; }
Объяснение кода листинга программы
- Включаются заголовочные файлы
и . - Определяется максимальная длина строки, которую можно сохранить в переменной типа char массива, с помощью макроса MAXLINE равного 1000.
- Определяются две функции: getline и copy. Функция getline принимает два аргумента: char s[] и int lim.
- В функции main создаются четыре переменные: len, max, line и longest.
- Переменная len инициализируется значением, равным 0.
- Переменная max инициализируется значением, равным 0.
- Переменная line инициализируется значением, равным пустой строке.
- Переменная longest инициализируется значением, равным пустой строке.
- Устанавливается условие цикла while для чтения строк из файла до тех пор, пока строка не будет пустой.
- Внутри цикла while происходит проверка длины текущей строки. Если текущая строка длиннее, чем max, то max обновляется, а текущая строка копируется в longest.
- После окончания цикла while выводится на экран наибольшая строка, если она была найдена.
- В функции getline происходит открытие файла
C:\\c.txt
для чтения с помощью функции fopen. - Переменная c инициализируется значением, равным первому символу в файле.
- Переменная i инициализируется значением, равным 0.
- В цикле for происходит чтение символов из файла до тех пор, пока не будет достигнут конец строки или не будет достигнут предел lim-1.
- Каждый символ сохраняется в соответствующую позицию в строке s.
- Если достигается конец строки, то в последнюю позицию строки s сохраняется символ новой строки '\n'.
- В конце функции закрывается файл с помощью функции fclose.
- Функция copy копирует строку из одного массива в другой.
- Цикл while выполняется до тех пор, пока не будет достигнут конец строки.
- Каждый символ из строки from копируется в соответствующую позицию в строке to.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д