buaa21 / summer2020

软件学院《程序设计实践》2020小学期仓库
40 stars 8 forks source link

C++读写文件问题 #270

Closed lyj2209914083 closed 3 years ago

lyj2209914083 commented 3 years ago

我想用在C++中既读入这个文件又可以在这个文件的末尾写入数据(文件本来就有内容),于是我用了fopen(”123.txt","a+")和fopen(”123.txt","r+");但发现一旦读入数据后,就无法再写入数据,如果不读就可以写入数据,请问这是什么情况,是我对这个函数的理解有错误吗?那我该如何实现最前面提到的功能

Roycent commented 3 years ago

fopen返回的指针根据你选用的模式(r+或者a+或者其他)会指向文件的不同位置(比如文件头、文件尾,或者在读取过程中会指向文件中间)。如果是非频繁更新的存档类场景,建议将读写分开,open一个文件后close再做另一个操作。如果需要频繁更新文件内容则比较麻烦一点,需要计算指针指向文件的位置,然后根据位置再进行相应的读/写操作。