2013-02-21 90 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會警告你不要使用它。