2013-02-21 102 views
0

在代码看到空格后,它完全停止阅读。如何更改我的代码,以便它在白色空间中读取如何使用scanf读取空格?

char line[300]; 

printf("Enter a string to be checked: "); 
scanf("%s", line); 

我通过重定向尝试输入字符串是:

((AA)<> [[[{[X]]] ] <>)

+1

可能的重复[如何在c中使用scanf读取空白区域](http://stackoverflow.com/questions/3765023/how-do-i-read-white-space-using-scanf-in- c) – 2013-02-21 05:16:55

+1

可能重复[如何允许使用scanf输入空格?](http://stackoverflow.com/questions/1247989/how-do-you-allow-spaces-to-be-entered-using- scanf) – 2013-02-21 05:18:24

回答

2

您可以用fgets scanf函数的intsead。例如:

fgets(line, 1024, stdin); 
+0

你可以使用gets,但这不是一个好方法。 – someuser 2013-02-21 05:25:22

+0

什么? **这是正确的答案。 – 2013-02-21 05:59:49

0

%s匹配一系列非空白字符;下一个指针必须是指向char的指针,并且该数组必须足够大才能接受所有序列和终止NUL字符。输入字符串在空白处或最大字段宽度处停止,以先发生者为准。

需要选择不同的格式字符串。从输入字符串中不太清楚你到底想要完成什么。

-1

请检查代码..

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 . . . 
+2

这不提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 – ryadavilli 2013-02-21 05:40:03

+0

我用作者字符串测试了代码。所以请不要在没有测试bahaviour的情况下判断任何答案。 – 2013-02-21 05:50:06

2

您应该使用之前发布的fgets(line, size, stdin);。你永远不要使用gets(),因为它期望每次都有相同的输入大小。编译器,至少gcc会警告你不要使用它。