代碼運行進入無限循環,無法停止。經排查發現兩個關鍵問題:
// 錯誤假設
fseek(fp, 2, SEEK_CUR); // 假設 int 佔 2 字節
sizeof(int) >= 2,具體大小由編譯器和目標平台決定(常見 4 字節)。sizeof(int) 動態計算偏移量。// 錯誤
fseek(fp, offset, 1); // 1 非標準,不可移植
// 正確
fseek(fp, offset, SEEK_CUR); // 相對當前位置
// 其他標準宏:SEEK_SET (文件開頭), SEEK_END (文件末尾)
int offset = sizeof(int); // 正確獲取 int 大小
fseek(fp, offset, SEEK_CUR); // 正確向後移動
sizeof。SEEK_SET、SEEK_CUR、SEEK_END。fseek 返回值(成功返回 0),異常時處理錯誤。