爲什麼我們必須插入3個輸入,因爲在雙引號之前和之後給出空格?scanf函數如何在C中工作?
2
A
回答
1
你scanf()
格式" %d%d "
有不良副作用多餘的空格:
第一個是多餘的,它指示
scanf()
跳過任何前導空格,但這樣已經不爲部分的%d
轉換。去掉它。尾隨的問題導致您的問題:它告訴
scanf()
跳過第二個整數後的任何尾隨空格。因此它會繼續讀取輸入,直到它看到不是空白或流結束的東西。也刪除它。
請注意,您還應驗證scanf()
並使用它們的值轉換前2個整數。也總是打印一個尾隨的換行符,因爲如果不這樣做,某些系統不會正確地刷新輸出。
#include <stdio.h>
int main(void) {
int a, b;
printf("Enter the values of a and b: ");
if (scanf("%d%d", &a, &b) == 2) {
printf("a=%d b=%d\n", a, b);
}
return 0;
}
0
爲什麼我們必須插入3個輸入作爲空格在雙引號之前和之後給出?
當您在格式字符串有空白,它會跳過任何數量的輸入流中的空格中。因此,scanf()
需要一個非空白*輸入才能終止。
scanf從手冊:
的空白字符的序列(空格,製表,換行等;見 isspace爲(3))。該指令與輸入中的任意數量的空白空間 (包括無)匹配。
所以,從格式字符串中刪除空格。或者更好,avoid scanf() altogether.
相關問題
- 1. scanf函數在C中如何工作?
- 2. 二scanf函數不工作
- 3. scanf()如何工作?
- 4. scanf()如何工作?
- 5. scanf函數不是在C
- 6. malloc函數如何在C中工作?
- 7. EOF函數如何在c中工作?
- 8. Scanf不能在Objective-C中工作
- 9. scanf函數的C/C++
- 10. printf和scanf如何工作?
- 11. 如何使scanf在if語句目標中工作c
- 12. C++中的sort函數如何工作?
- 13. 如何在c中的32位操作系統中創建scanf()函數?
- 14. 故障與scanf函數(C)
- 15. C來自scanf函數
- 16. 如何在C編程中使用scanf()函數進行打印?
- 17. scanf三次在c不工作?
- 18. scanf()函數不起作用?
- 19. c中的scanf函數返回什麼?
- 20. 輪詢C Linux函數如何工作?
- 21. c:函數waitpid如何工作?
- 22. Objective-C函數聲明如何工作?
- 23. 爲什麼在使用Win32 ConsoleInput函數時scanf不工作?
- 24. 與scanf函數
- 25. 與scanf函數
- 26. xcode scanf不能正常工作c
- 27. 函數重載在C中工作嗎?
- 28. 使函數在C++中正常工作
- 29. 函數不能在c中工作
- 30. C++如何讀取__int16_t整數使用scanf函數
@chqrlie,他爲什麼要接受一個答案?可能他們都不滿意。不要問它,那不禮貌。 –
@LuisColorado:OP在這方面的經驗很少,我只是在告訴如何接受答案。他的問題在兩個答案中都得到完全解決,接受其中一個是預期的行爲。我將重新修改評論以使其更加中立。 – chqrlie