Из функции getline1 возвращается неправильный результат - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Привет! Экспериментирую с данным кодом. Не могу понять почему при возврате занчения переменной i из getline1 возвращяется в main равной единице (т.е len=1).
#include<stdio.h>
 
#define MAXLINE 1000
 
int getline1(char line[],int maxline);
void copy(char to[],char from[]);
 
int main(){
 
    int len;
    int max;
    char line[MAXLINE];
    char longest[MAXLINE];
 
    max=0;
    while((len=getline1(line,MAXLINE) > 0))
        if(len > max){
            max =len;
            copy(longest,line);
        }
    if(max >0)
        printf("%s",longest);
return 0;
}
/*Here's getline()*/
int getline1(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;
}
/*Here's copy()*/
void copy(char to[],char from[]){
 
    int i;
    i=0;
    while((to[i] = from[i]) != '\0')
        ++i;
}

Решение задачи: «Из функции getline1 возвращается неправильный результат»

textual
Листинг программы
 while(   (len=getline1(line,MAXLINE))  > 0  )

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

  1. В цикле while выполняется условие, которое проверяет, что значение переменной len больше нуля.
  2. Функция getline1 принимает два аргумента: строку line и константу MAXLINE.
  3. Внутри функции происходит проверка, что строка не превышает максимальную длину, и считывание строки в новую переменную.
  4. Возвращаемое значение функции - это длина полученной строки.
  5. Значение переменной len присваивается результату функции getline1.
  6. Если результат функции больше нуля, то цикл продолжает выполняться.
  7. Значение переменной line присваивается результат функции getline1.
  8. Результат функции getline1 сохраняется в переменной len.
  9. Цикл while выполняется до тех пор, пока условие не станет ложным.
  10. Значение переменной line сохраняется в переменной MAXLINE.
  11. Результат функции getline1 присваивается переменной len.
  12. Значение переменной len сохраняется в переменной MAXLINE.
  13. Цикл while выполняется до тех пор, пока условие не станет ложным.
  14. Значение переменной line сохраняется в переменной MAXLINE.
  15. Результат функции getline1 присваивается переменной len.
  16. Значение переменной len сохраняется в переменной MAXLINE.
  17. Цикл while выполняется до тех пор, пока условие не станет ложным.
  18. Значение переменной line сохраняется в переменной MAXLINE.
  19. Результат функции getline1 присваивается переменной len.
  20. Значение переменной len сохраняется в переменной MAXLINE.

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


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

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

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