在代碼看到空格後,它完全停止閱讀。如何更改我的代碼,以便它在白色空間中讀取如何使用scanf讀取空格?
char line[300];
printf("Enter a string to be checked: ");
scanf("%s", line);
我通過重定向嘗試輸入字符串是:
((AA)<> [[[{[X]]] ] <>)
在代碼看到空格後,它完全停止閱讀。如何更改我的代碼,以便它在白色空間中讀取如何使用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