char name[10];
fgets(name, 9, stdin); // 限制讀 8 字符 + \0
getchar(); getchar(); getchar(); // 三次等待
輸入超過 9 字符後,程序直接運行完畢,三個 getchar() 似乎未生效。
fgets 讀滿 8 字符後停止,剩余字符留在 stdin 緩衝區(包含換行符)。getchar() 依次讀取緩衝區殘留字符,**並未阻塞等待新輸入**,程序正常 return 0 退出。fgets 保證不越界),也不是崩潰。int c;
while ((c = getchar()) != '\n' && c != EOF); // 讀取並丟棄直到換行
fgets 讀整行,再用 sscanf/strtok 解析,避免混用 scanf/getchar。fgets 返回值:NULL 表示 EOF/錯誤,非 NULL 即使讀滿也成功。