如何使用scanf读取空格?
在代码看到空格后,它完全停止阅读。如何更改我的代码,以便它在白色空间中读取如何使用scanf读取空格?
char line[300];
printf("Enter a string to be checked: ");
scanf("%s", line);
我通过重定向尝试输入字符串是:
((AA)<> [[[{[X]]] ] <>)
您可以用fgets scanf函数的intsead。例如:
fgets(line, 1024, stdin);
你可以使用gets,但这不是一个好方法。 – someuser 2013-02-21 05:25:22
什么? **这是正确的答案。 – 2013-02-21 05:59:49
%s匹配一系列非空白字符;下一个指针必须是指向char的指针,并且该数组必须足够大才能接受所有序列和终止NUL字符。输入字符串在空白处或最大字段宽度处停止,以先发生者为准。
需要选择不同的格式字符串。从输入字符串中不太清楚你到底想要完成什么。
请检查代码..
printf("Enter a string to be checked: ");
gets(line);
puts(line);
输出: -
Enter a string to be checked: ((a a) < > [ [ [ { [ x ] ]]] <>)
((a a) < > [ [ [ { [ x ] ]]] <>)
Press any key to continue . . .
这不提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 – ryadavilli 2013-02-21 05:40:03
我用作者字符串测试了代码。所以请不要在没有测试bahaviour的情况下判断任何答案。 – 2013-02-21 05:50:06
您应该使用之前发布的fgets(line, size, stdin);
。你永远不要使用gets()
,因为它期望每次都有相同的输入大小。编译器,至少gcc会警告你不要使用它。
可能的重复[如何在c中使用scanf读取空白区域](http://stackoverflow.com/questions/3765023/how-do-i-read-white-space-using-scanf-in- c) – 2013-02-21 05:16:55
可能重复[如何允许使用scanf输入空格?](http://stackoverflow.com/questions/1247989/how-do-you-allow-spaces-to-be-entered-using- scanf) – 2013-02-21 05:18:24