Из функции 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 )
Объяснение кода листинга программы
- В цикле while выполняется условие, которое проверяет, что значение переменной len больше нуля.
- Функция getline1 принимает два аргумента: строку line и константу MAXLINE.
- Внутри функции происходит проверка, что строка не превышает максимальную длину, и считывание строки в новую переменную.
- Возвращаемое значение функции - это длина полученной строки.
- Значение переменной len присваивается результату функции getline1.
- Если результат функции больше нуля, то цикл продолжает выполняться.
- Значение переменной line присваивается результат функции getline1.
- Результат функции getline1 сохраняется в переменной len.
- Цикл while выполняется до тех пор, пока условие не станет ложным.
- Значение переменной line сохраняется в переменной MAXLINE.
- Результат функции getline1 присваивается переменной len.
- Значение переменной len сохраняется в переменной MAXLINE.
- Цикл while выполняется до тех пор, пока условие не станет ложным.
- Значение переменной line сохраняется в переменной MAXLINE.
- Результат функции getline1 присваивается переменной len.
- Значение переменной len сохраняется в переменной MAXLINE.
- Цикл while выполняется до тех пор, пока условие не станет ложным.
- Значение переменной line сохраняется в переменной MAXLINE.
- Результат функции getline1 присваивается переменной len.
- Значение переменной len сохраняется в переменной MAXLINE.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д