Как сканировать строки с пробелами в них с помощью scanf ()?

Я хочу написать подпрограмму, в которой пользователь может ввести свой комментарий. Я использую scanf("%s", X) и позволяет им вводить комментарий, но он может хранить только слово перед пробелом в строке.

Как я могу решить эту проблему, чтобы сохранить целые предложения в строку или файл?

Мой код представлен ниже:

 FILE *fp; char comment[100]; fp=fopen("comment.txt","a"); printf("You can input your comment to our system or give opinion to the musics :\n"); scanf("%s",comment); fputs(comment,fp); 

4 Solutions collect form web for “Как сканировать строки с пробелами в них с помощью scanf ()?”

Вместо ответов, которые говорят вам, что вы не используете scanf() , вы можете просто опцию Negated scanset для scanf() :

 scanf("%99[^\n]",comment); // This will read into the string: comment // everything from the next 99 characters up until // it gets a newline 

scanf () с %s качестве спецификатора формата считывает последовательность символов, начиная с первого символа без пробелов, до (1) другого символа пробела или (2) до ширины поля, если это указано (например, scanf("%127s",str); – читать 127 символов и добавляет нулевой байт как 128-й), в зависимости от того, что наступит раньше. И затем автоматически добавьте нулевой байт в конце. Указатель передал мне достаточно большой, чтобы удерживать входную последовательность символов.

Вы можете использовать fgets для чтения всей строки:

 fgets(comment, sizeof comment, stdin); 

Обратите внимание, что fgets также читает символ новой строки. Вы можете избавиться от символа новой строки из comment .

вместо scanf используйте fgets на stdin, чтобы прочитать всю строку.

Вы можете использовать функции gets() , getline() для чтения строки из stdin .

  • Как читать строку с клавиатуры с помощью C? получение ошибки сегментации, проходящей в char *
  • scanf: «% » пропускает второй вход, но «% » - нет. Зачем?
  • Чтение строки с помощью scanf
  • Почему пространство в моей команде scanf имеет значение?
  • scanf regex - C
  • scanf () оставляет новый символ строки в буфере
  • Почему scanf ("% d", ) не потребляет '\ n'? в то время как scanf («% c»)?
  • Простой C scanf не работает?
  • C / C ++ printf () перед вызовом scanf ()
  • Разбор ввода с scanf в C
  • C пропускает одну команду функции?
  • Давайте будем гением компьютера.