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',正確跳過所有前導空白字符。