[問題] fwrite與fread的問題
#include <stdio.h>
int main(int argc, char* argv[]) {
if(argc != 3) {
puts("指令: copy <input> <output>");
return 1;
}
FILE *file1 = fopen(argv[1], "rb");
FILE *file2 = fopen(argv[2], "wb");
if(!file1) {
puts("檔案讀入失敗");
return 1;
}
if(!file2) {
puts("檔案輸出失敗");
return 1;
}
char ch;
while(!feof(file1)) {
fread(&ch, sizeof(char), 1, file1);
if(!feof(file1)) {
fwrite(&ch, sizeof(char), 1, file2);
}
}
fclose(file1);
fclose(file2);
return 0;
}
這一個程式是用來複製檔案的,
它是以byte為單位在複製,
但是,我困惑的是在執行最後一個迴圈時,
fread讀取最後一個byte,但if的內容沒有執行,也就是說fwrite沒有執行,
換句話說,來源的最後一個byte有讀取出來,但是沒有寫入到目的檔,
但是,最後來源檔與目的檔結果是一樣的,一直搞不懂為什麼差一個byte還會一樣?
先謝謝大家的指教
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.104.157.57
推
02/01 02:13, , 1F
02/01 02:13, 1F
推
02/01 02:14, , 2F
02/01 02:14, 2F
→
02/01 02:15, , 3F
02/01 02:15, 3F
→
02/01 03:34, , 4F
02/01 03:34, 4F
→
02/01 03:39, , 5F
02/01 03:39, 5F
推
02/01 06:53, , 6F
02/01 06:53, 6F
推
02/01 06:57, , 7F
02/01 06:57, 7F
→
02/01 09:50, , 8F
02/01 09:50, 8F
→
02/01 09:51, , 9F
02/01 09:51, 9F
→
02/01 09:53, , 10F
02/01 09:53, 10F
→
02/01 09:53, , 11F
02/01 09:53, 11F
→
02/01 09:53, , 12F
02/01 09:53, 12F
→
02/01 09:59, , 13F
02/01 09:59, 13F
推
02/01 10:16, , 14F
02/01 10:16, 14F
→
02/01 13:27, , 15F
02/01 13:27, 15F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章