Функция "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.