我如何使用扫描的scanf带空格的字符串()? [重复](How can I scan stri

2019-06-21 15:12发布

这个问题已经在这里有一个答案:

  • 从输入读取字符串与空格字符? [重复] 14个答案

我想写一个子计划,其中用户可以输入自己的评论。 我使用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);

Answer 1:

而不是告诉你不要使用答案scanf() ,你可以只是在否定的扫描集的选项scanf()

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


Answer 2:

scanf()的%s作为格式说明读取来自第一非空白字符开始的字符序列直到(1)的另一空白字符或(2)高达如果指定(例如字段宽度scanf("%127s",str); -读取127个字符,并追加空字节作为第128号),以先到者为准。 然后在结束时自动追加空字节。 通过该指针我是大到足以容纳字符的输入序列。

您可以使用与fgets读取整个行:

fgets(comment, sizeof comment, stdin);

需要注意的是与fgets读取换行符也是如此。 你可能想摆脱从换行符的comment



Answer 3:

而不是scanf函数使用fgets ,以读取整个行标准输入。



Answer 4:

您可以使用gets()getline()函数来读取字符串stdin



文章来源: How can I scan strings with spaces in them using scanf()? [duplicate]
标签: c input scanf