int main() {
int n;
scanf("%d", n); // 缺少 &
char zfc[n]; // 變長數組 (VLA)
scanf("%s", &zfc[0]);
}scanf("%d", n) 缺少取地址符:n 的值被當作地址訪問,導致非法內存寫入,直接觸發 Segmentation Fault。char zfc[n] 風險:C99 支持 VLA,但棧空間有限,若 n 較大易導致棧溢出;部分編譯器(如 MSVC)不支持 VLA,編譯會失敗。int main() {
int n;
scanf("%d", &n); // 加上 &
// 建議使用固定大小或動態分配
char *zfc = malloc(n + 1);
if (zfc) {
scanf("%s", zfc);
free(zfc);
}
return 0;
}使用 gdb 或 valgrind 定位非法內存訪問行;開啟編譯器警告(-Wall -Wextra)可捕獲 scanf 格式與參數不匹配。