当再次调用 fread(&myttt,sizeof(ttt),1,file)时,myttt 没有获取任何内容,还是上次亮衫贺读取的数据,输出时,当然是跟上次一样。
修改如下:
void readFile(int *n)
{
FILE *file=fopen("wmx.dat","r")
ttt myttt
if(file==NULL)
{
printf("打开文件失败.\n")
exit(0)
}
/敬派/ 检测文件长度,如果大于 0,先读取一行。
if(file->_bufsiz>0)
{
fread(&myttt,sizeof(ttt),1,file)
}
while(!feof(file)) //此处打印的塌羡最结果是11条记录.
{
printf("%d %d %s\n",myttt.ele1,myttt.ele2,myttt.ch)
// 当读取完数据后,读取出文件结束标志,
// 回到 while 时,就不再输出下一行了。
fread(&myttt,sizeof(ttt),1,file)
}
fclose(file)
}
if((fp=fopen("source.txt","wb"))==NULL)表示你采用的是穗困二进制的形式来写入文件同理
fp=fopen("source.txt","rb")/*打开文件source.txt*/
表示你用饥返二进制的形式烂族饥来读取文件
使用二进制形式读取或写入文件,文件采用的是二进制形式保存,采用记事本打开后会出现乱码。
fwrite(&k,sizeof(int),1,fp)k 是记录的个数,
本句是在文件中“第一个字”写入 一整形数标判敏记了本文件中总的记录的个数
是在第一个字位置,当然不可以放到文件尾,在读如程序部分,首先读出该整形
数
在void loaddate() 中
fread(&k,sizeof(int),1,fp) //读取之前成功写入的次数k。
如果将 k write 到 文件尾 ,失去了意义,并缓野且读出程序也需要修改
读出程序如果不能在开始判断出记录的个掘哪枝数,必须一次次检测直到读出遇到文件尾或是失败
不记录k 也可以家解决读取个数在读取前知道的问题
loaddate()中 使用
fseek(fp,0,SEEK_END)
long L=ftell(fp)
k=L/sizeof(cz)
fseek(fp,0,SEEK_SET)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)