首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言 getchar() 迴圈實作大小寫轉換:EOF 處理與字元過濾

     編輯:關於C語言

C 語言 getchar() 迴圈實作大小寫轉換:EOF 處理與字元過濾

完整程式碼

#include <stdio.h>
#include <ctype.h>

int main() {
    int ch; // 必須用 int 接收 EOF
    printf("輸入文字 (Ctrl+Z/EOF 結束):\n");
    while ((ch = getchar()) != EOF) {
        if (islower(ch)) putchar(toupper(ch));
        else if (isupper(ch)) putchar(tolower(ch));
        else if (isdigit(ch)) { /* 忽略數字 */ }
        else putchar(ch); // 保留標點、空白等
    }
    return 0;
}

關鍵點解析

  1. 變數型別用 int:getchar() 返回 int,範圍 0~255 與 EOF (通常 -1)。用 char 會導致 EOF 被截斷誤判。
  2. 使用 ctype.h 函數:islower/isupper/isdigit/toupper/tolower 支援地區設定,比手動比較 'a'..'z' 更健壯。
  3. EOF 觸發方式:Windows 控制台 Ctrl+Z 後按 Enter;Linux/macOS Ctrl+D。
  4. 非字母數字直接輸出:保留原文格式。

原始碼問題修正

原始碼用 char a; scanf_s("%c",&a); 先讀一字元,再進 getchar 迴圈會漏掉第一字元;且 a+32 轉換僅限 ASCII。以上版本修正所有問題。

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