程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 一個關於輸入輸出的問題

一個關於輸入輸出的問題

編輯:JAVA綜合教程

一個關於輸入輸出的問題



  1. #include
  2. #include
  3. int main()
  4. {
  5. int i = 0;
  6. int m = 0;
  7. //char str[100];

  8. while (scanf("%d",&m))
  9. {
  10. char str[10][10];
  11. for (i = 0;i < 5;i++)
  12. {
  13. printf("請輸入第%d 個字符:",i+1);
  14. //fgets(str[i],50,stdin);
  15. //gets(str[i]);
  16. scanf("%s",str[i]);
  17. //printf("%s",str[i]);
  18. // // scanf("%d",&m);
  19. }
  20. }
  21. /*while (gets(str))
  22. {
  23. printf("%s\n",str);
  24. }*/
  25. //return 0;



  26. return 0;
這個程序的奇葩輸出:
3
請輸入第1個字符:請輸入第2個字符:1
請輸入第3個字符:2
請輸入第4個字符:34
請輸入第5個字符:3
2
請輸入第1個字符:請輸入第2個字符:1
請輸入第3個字符:2
請輸入第4個字符:34
請輸入第5個字符:5


gets 函數在沒有while循環時好使,有while循環就不好使了,由於和while循環中scanf有關。
解析scanf:scanf :當遇到回車,空格和tab鍵會自動在字符串後面添加'\0',但是回車,空格和tab鍵仍會留在輸入的緩沖區中。。 gets函數從scanf執行後留下的回車作為第一個gets函數字符串參數。
scanf能完美解決

  1. #include
  2. #include
  3. #include
  4. using namespace std;
  5. int main()
  6. {
  7. int m = 0;
  8. char str[5];
  9. scanf("%d",&m);
  10. //gets(str);
  11. //scanf("%s",str);
  12. cin >> str;
  13. printf("%d\n",str[0]);
  14. return 0;
  15. }
cin可以,scanf也可以,gets則處理同上

個人猜測是編譯優化問題,還沒有明確答案

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved