Программа добавляет случайные символы в строку в C - PullRequest
0 голосов
/ 01 февраля 2020

Я нахожусь в процессе обучения 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];
}
...