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;
}