读书人

怎样用c++完成对txt资料中某一行进行删

发布时间: 2012-08-14 10:39:57 作者: rapoo

怎样用c++完成对txt文件中某一行进行删除或修改
ifstream可以独文件,ofstream可以写文件,那要怎样删除或修改特定的某一行呢

[解决办法]
用函数实现,或者用算法去实现
[解决办法]
如果文件不大,读出来修改再写进去!
[解决办法]
改写成c++版本的:

文本覆盖、插入、修改,简单的示例一下:

#include <stdio.h>
#include <stdlib.h>

int main()
{
FILE *fp;
char *insert = "EE,EE,EE,", tmp[256]={0};
int pos, i;

/*test.txt文件内容:01,00,00,00,0E,00,00,00,00,00,00,E1,E2,00,00,00,00*/
fp = fopen("test.txt", "r+");

/*1、等长覆盖*/
fseek(fp, 12, 1);
fprintf(fp, "0F"); /*直接写入等长度的数据就可以完成覆盖*/

/*2、E2后插入“EE,EE,EE,” */
fseek(fp, 25, 1);
pos = ftell(fp); /*插入位置*/
fgets(tmp, 256, fp); /*把后面的数据缓存*/
fseek(fp, pos, 0); /*移动到插入位置*/
fprintf(fp, insert); /*插入,就是写入数据*/
fprintf(fp, tmp); /*把原来的数据再写回来, 完成*/

/*3、01读取后++两次,并重新写回文件*/
rewind(fp);
fscanf(fp, "%x", &i); /*读取数据*/
i = i+2; /* +2 */
fseek(fp, -2, 1); /*调整指针*/
fprintf(fp, "%02x", i); /*写文件*/

fclose(fp);
system("PAUSE");
return 0;
}
[解决办法]
楼上很强大。up一下,楼主应该会了吧。
[解决办法]

探讨

改写成c++版本的:

文本覆盖、插入、修改,简单的示例一下:

#include <stdio.h>
#include <stdlib.h>

int main()
{
FILE *fp;
char *insert = "EE,EE,EE,", tmp[256]={0};
int pos, i;

/*test.txt文件内容:……

[解决办法]
所谓修改删除文件a某位置的内容,其实是读打开文件a,再将‘a中修改删除位置之前的内容+修改删除的内容+a中修改删除位置之后的内容’保存到文件b,关闭文件a,删除文件a,将文件b改名为与之前文件a相同的名字,仅此而已。
[解决办法]
Mark,一直也想这个问题。
4L的代码没事试试。

读书人网 >C++

热点推荐