Почему это новая строка в выводе printf?

#c #printf

#c #printf

Вопрос:

     #include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void){

    char noun[25];
    char plural[28];

    fgets(noun,24,stdin);
    strcpy(plural,noun);
    int len=strlen(plural);

    if(plural[len-2]=='h'||plural[len-2]=='s'){
        plural[len-1]='e';
        plural[len]='s';
        plural[len 1]='';
    }else if(plural[len-2]=='y'){
        plural[len-2]='i';
        plural[len-1]='e';
        plural[len]='s';
        plural[len 1]='';
    }else{
        plural[len-1]='s';
        plural[len]='';
    }

    printf("The plural of noun %s is %sn",noun,plural);
    return 0;
}
  

вывод всегда такой:

«Множественное число существительного horse

это лошади»

хотя я не ставлю n в середине printf, только в конце.

Комментарии:

1. Итак, вы прочитали справочные страницы функций, которые вы используете? Подсказка: ответ можно легко найти там.

2. Подсказка: Что в noun ?

3. технически я использую только strcpy(), который не добавляет новую строку.

4. Ваш strcpy вызов выполняет запись в plural , а не noun .

5. @KeithThompson Тогда это не операция.

Ответ №1:

fgets получает завершающий символ новой строки из стандартного ввода, когда вы нажимаете enter. Следовательно, существительное заканчивается символом новой строки

Комментарии:

1. спасибо вам, я сделал то, что сказал Olaf, и выяснил это, любая помощь о том, как ограничить ввод 25 символами в scanf. это этот scanf («% 25s», существительное)