文件中数据是这样的。
13 26 10
1 2
1 3
2 5
2 6
20 20 36
3 1
4 6
5 7
23 56 78
1 3
1 5
4 6
.。。。。。
我想要循环把数据读出来然后修改。
如果是3个数据,就退出本次循环,
两个数据就修改,然后继续读。
我用fseek移动文件指针但是有点问题,
求高手解答。给出算法,有代码更好。
同时读写文件很容易出问题的,尤其是文件长度发生改变的时候。
比如文件原来内容是:
12 34 56
将12读出,改成3后,结果变成了:
32 34 56
并且用fseek来改变文件指针也会有很多问题。为了避免这个问题,可以先将文件读入,修改后写到另一个文件中,读完文件后删除这个文件,再把另一个文件改成这个文件的名字。给段简单的代码你看看
int main()
{
FILE *pin, pout;
pin = fopen("a.txt", "rb");
pout = fopen("b.txt", "wb");
// 读a.txt,修改后写入b.txt
fclose(pin);
fclose(pout);
system("del a.txt");
system("rename b.txt a.txt");
return 0;
}追问
比如文件原来内容是:
12 34 56
将12读出,改成3后,结果变成了:
32 34 56
并且用fseek来改变文件指针也会有很多问题。为了避免这个问题,可以先将文件读入,修改后写到另一个文件中,读完文件后删除这个文件,再把另一个文件改成这个文件的名字。给段简单的代码你看看
int main()
{
FILE *pin, pout;
pin = fopen("a.txt", "rb");
pout = fopen("b.txt", "wb");
// 读a.txt,修改后写入b.txt
fclose(pin);
fclose(pout);
system("del a.txt");
system("rename b.txt a.txt");
return 0;
}追问
是的。我最后就是用这种方法解决的。但是我还是想在源文件中改,有没有好办法。
追答何必呢?这个就是最好的方法了,人们一般都是用这方法解决的,因为同时读写很容易出错,要算读指针,写指针的位置,太麻烦了
追问只是想更深入的了解下文件指针。。。
追答说真的,那个不必去了解,要了解还不如了解别的。用我那种方法是最好的解决方法了
温馨提示:答案为网友推荐,仅供参考