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

Объяснение кода листинга программы

  1. Включаются заголовочные файлы и .
  2. Определяется максимальная длина строки, которую можно сохранить в переменной типа char массива, с помощью макроса MAXLINE равного 1000.
  3. Определяются две функции: getline и copy. Функция getline принимает два аргумента: char s[] и int lim.
  4. В функции main создаются четыре переменные: len, max, line и longest.
  5. Переменная len инициализируется значением, равным 0.
  6. Переменная max инициализируется значением, равным 0.
  7. Переменная line инициализируется значением, равным пустой строке.
  8. Переменная longest инициализируется значением, равным пустой строке.
  9. Устанавливается условие цикла while для чтения строк из файла до тех пор, пока строка не будет пустой.
  10. Внутри цикла while происходит проверка длины текущей строки. Если текущая строка длиннее, чем max, то max обновляется, а текущая строка копируется в longest.
  11. После окончания цикла while выводится на экран наибольшая строка, если она была найдена.
  12. В функции getline происходит открытие файла C:\\c.txt для чтения с помощью функции fopen.
  13. Переменная c инициализируется значением, равным первому символу в файле.
  14. Переменная i инициализируется значением, равным 0.
  15. В цикле for происходит чтение символов из файла до тех пор, пока не будет достигнут конец строки или не будет достигнут предел lim-1.
  16. Каждый символ сохраняется в соответствующую позицию в строке s.
  17. Если достигается конец строки, то в последнюю позицию строки s сохраняется символ новой строки '\n'.
  18. В конце функции закрывается файл с помощью функции fclose.
  19. Функция copy копирует строку из одного массива в другой.
  20. Цикл while выполняется до тех пор, пока не будет достигнут конец строки.
  21. Каждый символ из строки from копируется в соответствующую позицию в строке to.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы