C语言编程,为什么修改文本内容会把txt所有内容清空了!!求解答!!
#include
#include
#include
typedef struct
{
int num;
char name[30];
char sort[30];
char press[30];
char author[30];
char date[30];
char place[30];
int amount;
char sign[30];
}BOOKS;
void modify(BOOKS stu[],int n);
int main()
{
BOOKS stu[500];
int n;
n= read(stu);
modify(stu,n);
return 0;
}
void modify(BOOKS stu[],int n)
{
FILE *fp,*ft;
char ch[500];
char a[500];
char key[500];
int i=0;
fp=fopen("D:\\学校\\图书信息.txt","r");
ft=fopen("D:\\学校\\图书馆理.txt","w");
if(fp==NULL||ft==NULL)
{
printf("文件未打开\n");
exit(1);
}
printf("请输入你想要修改的内容\n");
scanf("%s",ch);
printf("请输入修改后的内容\n");
scanf("%s",a);
while(fread(key,sizeof(key),1,fp))
{
if(strcmp(key,ch)!=0)
{
fwrite(key,sizeof(key),1,ft);
i++;
}
else
{
strcpy(key,a);
fwrite(key,sizeof(key),1,ft);
}
}
fclose(fp);
fclose(ft);
remove("D:\\学校\\图书信息.txt");
rename("D:\\学校\\图书馆理.txt","D:\\学校\\图书信息.txt");
printf("信息修改成功");
}
所谓修改删除文件a某位置的内容,其实是读打开文件a,再将‘a中修改删除位置之前的内容+修改删除的内容+a中修改删除位置之后的内容’保存到文件b,关闭文件a,删除文件a,将文件b改名为与之前文件a相同的名字,仅此而已。▼ http://bbs.csdn.net/topics/391975224