问题是;我运行文件存入单词并保存,下次打开.exe文件,存入新的单词,会在debug文件里多出一个txt文件,单词被存入了这个txt文件,之前的单词在另一个txt文件,怎么办
这是程序
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
typedef struct
{
char a[20];
char b[40];
}WORD;
WORD x[200];
void init()
{
int i;
FILE fp; //定义一个指向文件的指针变量
for (i=0;i<200;i++)
{
memset(x[i].a,'\0',sizeof(x[i].a)); //对定义的字符串进行初始化为'\0'
memset(x[i].b,'\0',sizeof(x[i].b));
}
fp=fopen("dc.txt","a+");
//fopen函数的返回值赋给指针变量fp
i=0;
while( fscanf(fp,"%s %s\n",x[i].a,x[i].b)!=EOF) //读写位置是否移到文件末尾
i++;
fclose(fp); //关闭文件
}
void find()
{
int i;
char temp[20];
printf(" 请输入一个单词或中文:");
scanf("%s",temp);
for (i=0;i<200;i++)
if((strcmp(temp,x[i].a)==0) ||(strcmp(temp,x[i].b)==0))
{
printf ("\n\n%s : %s",x[i].a,x[i].b);
printf ("\n\n 按任意键返回主菜单!");
getch(); //不回显函数,自动读取
return;
}
printf ("\n\n 没有该单词!");
getch();
return;
}
void add()
{
int i,j;
char word[20];
char temp[40];
for (i=0;i<200;i++)
{
if(!(x[i].a))
{
printf("\n\n 请输入单词:");
scanf("%s",word);
for (j=0;j<200;j++)
if(strcmp(word,x[j].a)==0) //输入内容已存在
{
printf ("\n\n 该单词已录入!\n\n");
printf (" 按任意键可返回主菜单!");
getch();
return;
}
printf("\n\n 请输入中文词意:");
scanf("%s",temp);
strcpy(x[i].a,word);
strcpy(x[i].b,temp);
return;
}
}
printf("\n\n 记录已满!");
}
void del()
{
int i;
char temp[20];
printf("\n\n 请输入单词:");
scanf("%s",temp);
for (i=0;i<200;i++)
if(strcmp(temp,x[i].a)==0)
{
memset(x[i].a,'\0',20);
memset(x[i].b,'\0',40);
printf ("\n\n 该词条已删除!");
printf (" 按任意键返回主菜单!");
getch();
return;
}
printf ("\n\n 没找到该单词记录!");
printf (" 按任意键返回主菜单!");
getch();
return;
}
void modify()
{
int i;
char temp[20];
char temp1[40];
printf("\n\n 请输入单词:");
scanf("%s",temp);
for (i=0;i<200;i++)
if(strcmp(temp,x[i].a)==0)
{
printf("%s : %s\n\n",x[i].a,x[i].b);
printf ("\n\n 请输入新的词意:");
scanf("%s",temp1);
strcpy(x[i].b,temp1);
printf ("\n\n 修改成功!按任意键返回主菜单!");
getch();
return;
}
printf ("\n\n没有找到该单词记录!");
printf (" 按任意键返回主菜单!");
getch();
return;
}
void view()
{
int i,j;
system("cls");
for (i=0,j=0;i<200;i++)
{
if(x[i].a!='\0')
{
j++;
printf("%s : %s\n",x[i].a,x[i].b);
if(j==20)
{
j=0;
printf ("\n 按任意键翻页!");
getch();
system("cls");
}
}
}
printf("\n\n 所有的单词已显示完!");
printf ("\n 按任意键翻页!");
getch();
return;
}
void store()
{
int i;
FILEfp;
fp=fopen("dc.txt","w");
if(fp==NULL)
printf("建立文件失败!");
getchar();
for (i=0;i<200;i++)
fprintf(fp,"%s %s\n",x[i].a,x[i].b);
fclose(fp);
printf ("\n\n 保存成功!\n\n");
printf ("\n 按任意键返回主菜单!");
getch();
return;
}
main()
{
char key;
init();
while(1)
{
system("cls");
printf("\n\n\n 电子英汉词典 \n\n");
printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \n");
printf(" * 1、单词查询 * \n");
printf(" * 2、词条录入 * \n");
printf(" * 3、词条删除 * \n");
printf(" * 4、词条修改 * \n");
printf(" * 5、信息显示 * \n");
printf(" * 6、信息保存 * \n");
printf(" * 7、退出系统 * \n");
printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \n");
printf("请输入您需要执行的序号:");
key=getch();
printf("%c\n",key);
switch(key)
{
case '1':find();break;
case '2':add();break;
case '3':del();break;
case '4':modify();break;
case '5':view();break;
case '6':store();break;
case '7': return 0;
}
}
return 0;
}
用a+ 就是在原有的txt文件中追加。
保存文件函数:void store()
{
int i;
FILE *fp;//fp 是文件指针,少了 * 号
fp=fopen("dc.txt","w");
if(fp==NULL)
printf("建立文件失败!");
getchar();
for (i=0;i<200;i++)
fprintf(fp,"%s %s\n",x[i].a,x[i].b);
fclose(fp);
printf ("\n\n 保存成功!\n\n");
printf ("\n 按任意键返回主菜单!");
getch();
return;
}