@andreiglingeanu

Почему функция fgets не работает, как ожидается?

Есть такой код:

code
int main(void)
{
    char name[80];   printf("> ");

    fgets(name, 80, stdin);

    char *res = strstr("Some text, really some junk text.", name);

    if (res)
        printf("%s\n", res);
    return 0;
}


Если для чтения из stdin использовать fgets то ничего не выведется.
Но если вместо fgets использовать scanf то все работает на ура.
Просветите, пожалуйста.
  • Вопрос задан
  • 4592 просмотра
Решения вопроса 2
rafuck
@rafuck
Символ конца строки.
Ответ написан
@Free_ze
Пишу комментарии в комментарии, а не в ответы
Мне кажется, что не нуль-терминатор, а символ переноса строки. В случае с fgets, в отличии от gets, он также копируется в строку. В итоге, ( str \0 ) != ( str \n \0 )

Например, здесь мы перевода строки не делаем, ибо клавишу не жмем, все работает: ideone.com/0Falz2
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы