我對strcpy()函數有個疑問。我想要做的是用戶輸入文件名,我基本打開文件,獲取內容並創建文件副本。c strcpy文件描述符
但是,我決定做一些錯誤檢查,以檢查在寫入之前,read()內容是否與複製文件中寫入的內容相同。所以,我使用文件讀取的文件大小將內容讀入()內容到動態數組中,所以緩衝區是適合數據的大小。然後我想創建一個到另一個動態緩衝區的副本,並使用strcmp()來查看它們是否相同,如果是這樣,那麼我將複製緩衝區寫入輸出文件?
也能正常工作的某些文件,但問題與視頻文件(MPEG)等,打開一個視頻文件出現錯誤「無法確定流的類型」,繼承人的想法時,
char* buffer1 = malloc(filessize);
char* buffer2 = malloc(filessize);
read(file, buffer1, filesize);
strcpy(buffer2, buffer1); //copy buffer1 into buffer2
if(strcmp(buffer1, buffer2) == 0)
{
write(outputfile, buffer2, filesize); //write copied buffer to file
}
free(buffer1); free(buffer2);
那麼爲什麼我在內存中創建了另一個緩衝區副本,以便我可以比較實際的位數據,而不僅僅是大小,所以我知道正在寫入的數據與正在讀取的數據相同?
你有沒有試過在二進制模式下打開視頻文件? – programmer 2011-01-11 13:20:00
簡短的完整性檢查:爲什麼要將文件內容複製到內存中?這絕對沒有必要,因爲文件內容可以用讀緩衝區的內容直接寫入。 – 2011-01-11 13:25:24