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

文件查找删除操作,help,该如何解决

2012-03-02 
文件查找删除操作,help/*data.txt文件内容:1赵20004李23003周21006刘3000*/structry{intnum//编号charnam

文件查找删除操作,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;
}

热点排行