代碼:
scanf("%c", &x);
gets(ab); // 讀到空字符串
scanf("%c") 讀取字符後,換行符 '\n' 留在輸入緩衝區。隨後 gets() 讀取首個字符即為 '\n',以為是空行結束,返回空字符串。
scanf("%c", &x);
getchar(); // 吃掉 \n
gets(ab);
scanf(" %c", &x); // %c 前有空格,自動跳過 \n/空格/Tab
gets(ab);
char line[100];
fgets(line, sizeof(line), stdin);
sscanf(line, "%c", &x);
fgets(ab, sizeof(ab), stdin);
gets() 已棄用 (C11 移除),不安全 (無長度限制),請用 fgets()。scanf("%c") 不跳過空白符,scanf(" %c") 會跳過。在 scanf("%c") 後加 getchar() 或改用 scanf(" %c"),gets/fgets 即可正常讀取下一行。