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

C 語言統計字符類型:死循環導致無輸出的修正

     編輯:程式設計綜合問答

錯誤代碼

char c;
c = getchar();
while (c != '\n') {
    if (c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z') i++;
    else if (c == ' ') j++;
    else if (c >= '0' && c <= '9') k++;
    else s++;
    // 缺少再次讀取 c = getchar();
}
printf(...);

原因

c 只讀取一次,循環體內未更新 c,導致條件 c != '\n' 永真,進入**死循環**,程序卡住無法輸出結果。

修正代碼

int i = 0, j = 0, k = 0, s = 0;
char c;
printf("請輸入字符串:\n");
c = getchar();
while (c != '\n') {
    if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) i++;
    else if (c == ' ') j++;
    else if (c >= '0' && c <= '9') k++;
    else s++;
    c = getchar(); // 關鍵:循環末尾讀取下一字符
}
printf("字母:%d 空格:%d 數字:%d 其他:%d\n", i, j, k, s);

進階寫法

使用字符數組緩衝整行,再遍歷統計,避免逐字符輸入的緩衝區殘留問題:

char str[1024];
fgets(str, sizeof(str), stdin);
for (int p = 0; str[p] && str[p] != '\n'; p++) {
    // 同樣統計邏輯
}

核心教訓:循環條件變量必須在循環內更新,否則陷入無限循環。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved