这个问题已经在这里有一个答案:
- 从输入读取字符串与空格字符? [重复] 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);
而不是告诉你不要使用答案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
scanf()的用%s
作为格式说明读取来自第一非空白字符开始的字符序列直到(1)的另一空白字符或(2)高达如果指定(例如字段宽度scanf("%127s",str);
-读取127个字符,并追加空字节作为第128号),以先到者为准。 然后在结束时自动追加空字节。 通过该指针我是大到足以容纳字符的输入序列。
您可以使用与fgets读取整个行:
fgets(comment, sizeof comment, stdin);
需要注意的是与fgets读取换行符也是如此。 你可能想摆脱从换行符的comment
。
而不是scanf函数使用fgets
,以读取整个行标准输入。
您可以使用gets()
, getline()
函数来读取字符串stdin
。