文件查找删除操作,help
/*
data.txt 文件内容:
1 赵 2000
4 李 2300
3 周 2100
6 刘 3000
*/
struct ry
{
int num; //编号
char name[10]; //姓名
int pay; //工资
}ren[N];
FILE *fp;
fp=fopen( "data.txt ", "w ");
printf( "请输入要删除的编号: ");
scanf( "%d ",&n);
当我输入“4”时,把这行删除,我想要的结果是:
/*
data.txt 文件内容:
1 赵 2000
3 周 2100
6 刘 3000
*/
请问怎么写呀,我实在是想不出来~
[解决办法]
#include <stdio.h>
#include <stdlib.h>
struct ry
{
int num; //编号
char name[10]; //姓名
int pay; //工资
}ren;
int main()
{
int n, m, tmp, start, end;
FILE *fp;
fp=fopen( "data.txt ", "r+ "); //注意打开方式,w的话就清空文件内容咯
printf( "请输入要删除的编号: ");
scanf( "%d ",&n);
start = ftell(fp);
printf( "pos=%d\n ", start);
while(!feof(fp))
{
start = ftell(fp);
printf( "pos=%d\n ", start);
fscanf(fp, "%d%2s%d ", &ren.num, ren.name, &ren.pay);
printf( "%d\t%s\t%d\n ", ren.num, ren.name, ren.pay);
if(ren.num == n)break;
}
end = ftell(fp);
rewind(fp);
fseek(fp, start+2, SEEK_SET);
start = ftell(fp);
while(!feof(fp) && (start != end))
{
fputc( ' ', fp);
start = ftell(fp);
}
fclose(fp);
system( "pause ");
return 0;
}