Я нахожусь в процессе обучения C, и я наткнулся на ошибку, и я, кажется, не могу обойти ее.
Этот код должен принимать несколько строк текста (после ввода Enter), сравнивать строки друг с другом, останавливать сравнение при нажатии EOF (aka. Crtl - Z), выбирать самую длинную строку и печатать ее. на консоль.
Он делает это, но при печати текста иногда добавляет к выводу некоторые дополнительные символы.
Это код:
int get_line(char s[]);
void copy(char from[], char to[]);
main()
{
int len;
char line[1000]; //the array which is used to compare
char longest[1000]; //the array in which the longest line will be stored
int max = 1; //the maximum length of a line
while ((len = get_line(line)) > 0) //checks if the length of a line in more than 0
if (len > max)
{
max = len;
copy(line, longest);
}
if (max > 0)
printf("%s", longest); //prints out the longest line, if it exists
}
int get_line(char s[])
{
int c, i;
for (i = 0; (c = getchar()) != EOF && c != '\n'; ++i) //reads the line until ^Z of Enter
s[i] = c;
return (i);
}
copy(char from[], char to[])
{
for (int i = 0; from[i] != '\n'; ++i)
to[i] = from [i];
}