我想写一个用户可以输入评论的子程序。
我使用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);
答案 0 :(得分:21)
而不是告诉你不使用scanf()
的答案,你可以只使用scanf()
的{{3}}选项:
scanf("%99[^\n]",comment); // This will read into the string: comment
// everything from the next 99 characters up until
// it gets a newline
答案 1 :(得分:11)
%s
作为格式说明符的scanf()读取从第一个非空白字符开始的字符序列,直到(1)另一个空格字符或(2)字段宽度(如果指定)(例如{ {1}} - 读取127个字符并将空字节附加为128th),以先到者为准。然后在结尾处自动附加空字节。指针通过我的大到足以保存输入的字符序列。
您可以使用 fgets 阅读整行:
scanf("%127s",str);
请注意,fgets也会读取换行符。您可能希望摆脱fgets(comment, sizeof comment, stdin);
。
答案 2 :(得分:3)
而不是scanf在stdin上使用fgets
来读取整行。
答案 3 :(得分:2)
您可以使用gets()
,getline()
函数从stdin
读取字符串。