[問題] 關於dev c 想請教讀檔寫檔問題

看板C_and_CPP (C/C++)作者 (pig00225)時間10年前 (2015/07/24 22:04), 10年前編輯推噓2(2015)
留言17則, 5人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) dev c++ 問題(Question): 現在有兩個檔案read.txt跟write.txt, 想將read的資料抓出修改後寫入write 餵入的資料(Input): read.txt:A123456789張阿三10 B123456789李阿四15 C123456789王老五45 就上面三行,要寫入從write.txt的下一行開始 錯誤結果(Wrong Output): A123456789張阿三10 B123456789李阿四15 C123456789王老五45C123456789王老 程式碼(Code):(請善用置底文網頁, 記得排版) #include <stdio.h> #include <stdlib.h> #define read "E:\\read.txt" #define write "E:\\write.txt" typedef struct{ char ID[10]; char name[6]; char age[2]; }DATA; int main(void) { FILE *readPtr, *writePtr; DATA data; readPtr = fopen(read, "rb"); writePtr = fopen(write, "ab"); if (!readPtr) { printf("read.txt fail to open...\n"); } else if(!writePtr) { printf("write.txt fail to open...\n"); } else{ while(!feof(readPtr)){ fread(&data, sizeof(DATA), 1, readPtr); fwrite(&data, sizeof(DATA), 1, writePtr); fprintf(writePtr,"\0"); //為了換行 } } fclose(readPtr); fclose(writePtr); system("pause"); return 0; } 補充說明(Supplement): 新手求助: 問題1.為什麼會多出"C123456789王老"? 2.如果我想把裡面資料儲存,我這樣定義struct怎麼把讀出來的存進去? 3.假設我想修改裡面資料後再寫入檔案該怎麼做? 請老手賜教! 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.166.116.209 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1437746645.A.7A6.html ※ 編輯: pig00225 (118.166.116.209), 07/24/2015 22:05:51 ※ 編輯: pig00225 (118.166.116.209), 07/24/2015 22:07:32

07/24 22:26, , 1F
fprintf(writePtr,"\0"); //為了換行 <--
07/24 22:26, 1F

07/24 22:28, , 2F
把 0x00 送進檔案不會換行,應該是 \n
07/24 22:28, 2F

07/24 22:32, , 3F
還有... 讀一個字元->寫一個字元->加入 \0 至檔案
07/24 22:32, 3F

07/24 22:32, , 4F
這邏輯有點怪
07/24 22:32, 4F

07/24 22:35, , 5F
1J2ZtSL3 (C_and_CPP) 這篇看一下 , feof 也有問題
07/24 22:35, 5F

07/24 22:49, , 6F
搜不到你說的那篇耶
07/24 22:49, 6F

07/24 23:01, , 7F
我原本也是用\n 但是出來變斷兩行....
07/24 23:01, 7F

07/24 23:01, , 8F
我斷行是為了下一次再寫入是斷行開始 不想接在後面
07/24 23:01, 8F

07/24 23:32, , 9F
www.ptt.cc/bbs/C_and_CPP/M.1393180124.A.543.html
07/24 23:32, 9F

07/25 00:16, , 10F

07/25 00:20, , 11F
然後小提一下,你是用 "wb", windows 的換行是 "\r\n"
07/25 00:20, 11F

07/25 06:23, , 12F
用二進位方式讀寫.txt?
07/25 06:23, 12F

07/25 20:09, , 13F
三行都有enter的話,全部讀57字元才會讀到eof
07/25 20:09, 13F

07/25 20:44, , 14F
07/25 20:44, 14F

07/26 18:40, , 15F
我想請教一下 我想儲存讀取結果 A B方法差異
07/26 18:40, 15F

07/26 18:40, , 16F
07/26 18:40, 16F

07/26 20:55, , 17F
去找本書, 先把檔案讀寫念過並實作一遍
07/26 20:55, 17F
文章代碼(AID): #1LiaNLUc (C_and_CPP)
文章代碼(AID): #1LiaNLUc (C_and_CPP)