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

C 語言 get_first() 跳過空白字符含換行符的正確寫法

     編輯:程式設計綜合問答

問題代碼

char get_first(void) {
    int ch = getchar();
    while (isblank(ch)) ch = getchar(); // isblank 不處理 '\n'
    while (getchar() != '\n') continue;
    return ch;
}

原因

isblank() 僅識別空格 ' ' 和水平製表符 '\t',**不包含換行符 '\n'**。輸入換行時循環不會跳過,導致函數返回換行符。

修正方案

改用 isspace(),它涵蓋空格、制表符、換行符、垂直製表符、換頁符、回車符。

char get_first(void) {
    int ch = getchar();
    while (isspace(ch)) ch = getchar(); // 正確跳過所有空白字符
    while (getchar() != '\n') continue; // 清空行緩衝
    return ch;
}

驗證

輸入 " \n\t A",函數將返回 'A',正確跳過所有前導空白字符。

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