scanf("格式化字符串", 地址表);
%d %f %s 等,與 printf 基本一致⚠️ 必須傳遞變量地址(&變量名),而非變量值! 這與 printf 截然不同。
int i, j;
scanf("%d, %d", &i, &j); // 讀整數,跳過逗號,再讀整數
數組名/指針本身即地址,不加 &:
char *p, str[20];
scanf("%s", p); // 正確
scanf("%s", str); // 正確
scanf("%10s", p); // 最多讀 10 字符,第 11 字符留給下次讀取
char c1, c2;
scanf("%c", &c1); // 輸入 'A' + 回車
scanf("%c", &c2); // c2 讀到 '\n'!
scanf("%c", &c1);
fflush(stdin); // Turbo C 專用,清除輸入緩衝區
scanf("%c", &c2);
int ch;
while ((ch = getchar()) != '\n' && ch != EOF); // 標準做法
scanf 返回值(成功賦值的項數),確保輸入有效fgets + sscanf 避免緩衝區問題%c 與其他格式,除非精確控制緩衝區scanf 功能強大但易誤用,理解其掃描機制與緩衝區行為是編寫健壯輸入代碼的關鍵。