[问题] 关于dev c 想请教读档写档问题

楼主: pig00225 (uglypig)   2015-07-24 22:04:03
开发平台(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.假设我想修改里面资料后再写入档案该怎么做?
请老手赐教! 谢谢
作者: Hazukashiine (私は幸せです)   2015-07-24 22:26:00
fprintf(writePtr,"\0"); //为了换行 <--把 0x00 送进档案不会换行,应该是 \n还有... 读一个字符->写一个字符->加入 \0 至档案这逻辑有点怪
作者: EdisonX (卡卡兽)   2015-07-24 22:35:00
1J2ZtSL3 (C_and_CPP) 这篇看一下 , feof 也有问题
楼主: pig00225 (uglypig)   2015-07-24 22:49:00
搜不到你说的那篇耶我原本也是用\n 但是出来变断两行....我断行是为了下一次再写入是断行开始 不想接在后面
作者: Hazukashiine (私は幸せです)   2015-07-24 23:32:00
www.ptt.cc/bbs/C_and_CPP/M.1393180124.A.543.html
作者: EdisonX (卡卡兽)   2015-07-25 00:16:00
#1J2ZtSL3 (C_and_CPP) https://goo.gl/W7oIbh然后小提一下,你是用 "wb", windows 的换行是 "\r\n"
作者: stupid0319 (征女友)   2015-07-25 06:23:00
用二进制方式读写.txt?
作者: twitcha101 (twitch)   2015-07-25 20:09:00
三行都有enter的话,全部读57字符才会读到eofhttps://goo.gl/rENsaH
楼主: pig00225 (uglypig)   2015-07-26 18:40:00
我想请教一下 我想储存读取结果 A B方法差异网址 https://goo.gl/FTnSlB
作者: EdisonX (卡卡兽)   2015-07-26 20:55:00
去找本书, 先把档案读写念过并实作一遍

Links booklink

Contact Us: admin [ a t ] ucptt.com