作者pig00225 (pig00225)
看板C_and_CPP
標題[問題] 關於dev c 想請教讀檔寫檔問題
時間Fri Jul 24 22:04:03 2015
開發平台(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
→ Hazukashiine: fprintf(writePtr,"\0"); //為了換行 <-- 07/24 22:26
→ Hazukashiine: 把 0x00 送進檔案不會換行,應該是 \n 07/24 22:28
→ Hazukashiine: 還有... 讀一個字元->寫一個字元->加入 \0 至檔案 07/24 22:32
→ Hazukashiine: 這邏輯有點怪 07/24 22:32
→ EdisonX: 1J2ZtSL3 (C_and_CPP) 這篇看一下 , feof 也有問題 07/24 22:35
→ pig00225: 搜不到你說的那篇耶 07/24 22:49
→ pig00225: 我原本也是用\n 但是出來變斷兩行.... 07/24 23:01
→ pig00225: 我斷行是為了下一次再寫入是斷行開始 不想接在後面 07/24 23:01
→ Hazukashiine: www.ptt.cc/bbs/C_and_CPP/M.1393180124.A.543.html 07/24 23:32
→ EdisonX: 然後小提一下,你是用 "wb", windows 的換行是 "\r\n" 07/25 00:20
推 stupid0319: 用二進位方式讀寫.txt? 07/25 06:23
→ twitcha101: 三行都有enter的話,全部讀57字元才會讀到eof 07/25 20:09
→ pig00225: 我想請教一下 我想儲存讀取結果 A B方法差異 07/26 18:40
推 EdisonX: 去找本書, 先把檔案讀寫念過並實作一遍 07/26 20:55