急急急!移动这个文件指针

来源:百度知道 编辑:UC知道 时间:2024/06/03 15:52:42
定义了结构体,用sizeof算出长度为44,输入了若干组数据,写入txt文件
如zhang 32 M student busy
luo 23 W student busy
wang 26 M doctor free
想修改luo这一行,用fseek(fp,44L,0);来修改,怎么文件指针不是指向luo这一行的开头啊,修改到了另外的地方,怎么回事啊?帮帮忙,我用的fprintf(fp,"%s\t%d\t%s\r%s\r%s\n",........)这种格式输入的
帮帮忙啊

不是用二进制写入的,不容易算位置。
如果是用
fprintf(fp,"%s\t%d\t%s\r%s\r%s\n",........)这种格式输入的
好办:

用 char buff[180];
rewind(fp); // 回到文件开始
fgets(buff,180,fp); // 跳过一行,包含跳过一个'\n'
这里就是修改点了。

按你说的,修改到了什么地方?
这也要看位置指针移动的时候在哪啊?用rewind函数把位置指针重新定位到文件的开头试试看(rewind(fp))!

因为文件中还有空格部分.比如"\n"引起的换行,导致第二个数据与第一个数据之间的距离可能不是44.
解决办法之一是去掉fprintf()参数中的那个换行符:"\n";
你试一下,看看结果对不?.

提示一下:如果文件是用二进制写入的,就会省去很多麻烦.