首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 語言 scanf() 默認以空白字符分隔輸入,逗號需在格式串中顯式匹配

     編輯:程式設計疑難解答

現象

輸入 1 2 3 4 5 (空格分隔) 正常;輸入 1,2,3,4,5 (逗號分隔) 失敗,第二個 %d 讀取失敗。

原因

scanf("%d", &x) 會**自動跳過**前導空白字符 (空格、換行、制表符),但**不跳過**逗號、分號等非空白字符。逗號留在緩衝區,導致下一次 %d 匹配失敗。

解決方案

  1. 格式串匹配逗號:scanf("%d,", &x) (注意逗號後無空格)。
  2. 先讀整行再解析:
    char line[1024];
    fgets(line, sizeof(line), stdin);
    // 用 strtok、sscanf、手動解析分割
  3. 輸入規範化:要求用戶用空格分隔,或前端預處理替換逗號為空格。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved