首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C写文件的简单有关问题~

2012-02-11 
C写文件的简单问题~~~NO.001A0000110FNO.002A0001111F...文本格式,内容如上。我想把第i行的F

C写文件的简单问题~~~
NO.001;A;00;00;1;10;F;
NO.002;A;00;01;1;11;F;
...
文本格式,内容如上。
我想把第i行的F改为T,怎么办呢?

[解决办法]
打开文件,
移动文件指针到 这个需要修改的 F 的位置,
然后写入 T ,F字符就被覆盖为 T 了
[解决办法]
比如修改第一行的F:

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

int main(int argc, char *argv[])
{
FILE *fp;
fp=fopen( "test.txt ", "r+ "); //读写方式打开文件
fseek(fp, 20L, 0); //移动指针到 第一行的 F 位置
fprintf(fp, "%c ", 'T '); //写入一个 T ,覆盖原来的 F
fclose(fp); //完成操作, 关闭文件
system( "PAUSE ");
return 0;
}

test.txt文件内容:
NO.001;A;00;00;1;10;F;
NO.002;A;00;01;1;11;F;
[解决办法]
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>

/*
数据格式

NO.001;A;00;00;1;10;F;
NO.002;A;00;01;1;11;F;
...
修改n行 F为T
*/
#define FILENAME "d:\\data.txt "

int ReFile(char *fname,int line);

int main (int argc, char *argv[ ])
{
int nline=0;
printf( "Please Input Line: ");
scanf( "%d ",&nline);
if(0==nline)
{
printf( "\nError: line 小于或等于 0 ");
return 1;
}

int nRet=ReFile(FILENAME,nline);
if(0==nRet)
printf( "\n修改成功! ");
else
printf( "\n修改失败! ");

return 0;
}

int ReFile(char *fname,int line)
{
char buf[23];

FILE *pfile=fopen(fname, "r+ ");

while(!feof(pfile))
{
int nowline=0;
char tmline[4];

fread(buf,sizeof(char),23,pfile);
memcpy(tmline,buf+3,3);
tmline[3]= '\0 ';

nowline=atoi(tmline);

if(line==nowline)
{
fseek(pfile,-24,SEEK_CUR);
memcpy(buf+20, "T ",1);
fwrite(buf,sizeof(char),23,pfile);
fclose(pfile);
return 0;
}
}

fclose(pfile);
return 1;
}

热点排行