C语言题,紧急,高手们帮帮忙! 如何在下面这个函数中加入文件操作来保存输入的数据?

void Add()//信息录入
{

char c='Y';
int choice;
while(c=='Y')
{
fflush(stdin);//清除输入流的缓存区,确保不影响后面的数据读取
printf("\n请输入设备ID号:");
scanf("%s",eq[n].ID);
printf("\n请输入设备种类:");
scanf("%s",eq[n].kind);
printf("\n请输入设备名称:");
scanf("%s",eq[n].name);
printf("\n请输入设备价格:");
scanf("%s",eq[n].price);
printf("\n请输入设备购入日期:");
scanf("%d %d %d",&eq[n].purchaseDay.year,&eq[n].purchaseDay.month,&eq[n].purchaseDay.day);
printf("\n请输入设备是否报废:");
scanf("%s",eq[n].yesno);
printf("\n请输入报废日期:");
scanf("%d %d %d",&eq[n].overDay.year,&eq[n].overDay.month,&eq[n].overDay.day);
n++;
printf("\n提示:已经完成%d记录的录入!\n",n);
printf("\n输入Y继续!\n");
c=getchar();
}
printf("\n提示:输入0则返回主菜单!\n");
scanf("%d",&choice);
if(choice==0)

menu();
}
要下次输入时不会将之前输入的数据覆盖的。

随便写了一个,因为不知道你的sn[]数据室怎么定义的,所以你自己只写了出来没有排错,你自己调试吧,应该就是这个样子

int writeDat()
{
FILE *fp;
if((fp=fopen("c:\\设备清单.txt","a"))==NULL) //打开文件
{
printf("打开文件失败 c:\\设备清单.txt!");
getch();
return(1);
}

//输出到文件
fprintf(fp, "\n%s ",eq[n].ID);
fprintf(fp, "%s ",eq[n].kind);
fprintf(fp, "%s ",eq[n].name);
fprintf(fp, "%s ",eq[n].price);
fprintf(fp, "%d %d %d",&eq[n].purchaseDay.year,&eq[n].purchaseDay.month,&eq[n].purchaseDay.day);
fprintf(fp, "%s ",eq[n].yesno);
fprintf(fp, "%d %d %d",&eq[n].overDay.year,&eq[n].overDay.month,&eq[n].overDay.day);

//输出到屏幕,不需要的话可以屏蔽掉
fprintf("\n%s ",eq[n].ID);
fprintf("%s ",eq[n].kind);
fprintf("%s ",eq[n].name);
fprintf("%s ",eq[n].price);
fprintf("%d %d %d",&eq[n].purchaseDay.year,&eq[n].purchaseDay.month,&eq[n].purchaseDay.day);
fprintf("%s ",eq[n].yesno);
fprintf("%d %d %d",&eq[n].overDay.year,&eq[n].overDay.month,&eq[n].overDay.day);
fclose(fp);//关闭文件
return(0);
}

void Add()//信息录入
{

char c='Y';
int choice;
while(c=='Y')
{
fflush(stdin);//清除输入流的缓存区,确保不影响后面的数据读取
printf("\n请输入设备ID号:");
scanf("%s",eq[n].ID);
printf("\n请输入设备种类:");
scanf("%s",eq[n].kind);
printf("\n请输入设备名称:");
scanf("%s",eq[n].name);
printf("\n请输入设备价格:");
scanf("%s",eq[n].price);
printf("\n请输入设备购入日期:");
scanf("%d %d %d",&eq[n].purchaseDay.year,&eq[n].purchaseDay.month,&eq[n].purchaseDay.day);
printf("\n请输入设备是否报废:");
scanf("%s",eq[n].yesno);
printf("\n请输入报废日期:");
scanf("%d %d %d",&eq[n].overDay.year,&eq[n].overDay.month,&eq[n].overDay.day);

if(writeDat())printf("\n提示:第%d条记录的录入失败!\n",n+1);;
else
{
n++;
printf("\n提示:已经完成%d记录的录入!\n",n);;
}
printf("\n输入Y继续!\n");
c=getchar();
}
printf("\n提示:输入0则返回主菜单!\n");
scanf("%d",&choice);
if(choice==0)

menu();
}追问

非常感谢!但我刚试了一下,在C盘里没有创建到这个文件。

追答

我这里看以创建的啊

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-10
void main()
{
FILE *fp;
if((fp=fopen("文件名.格式","a"))==NULL)
{
printf("Can't open the file!\n");
exit(0);
}
```````
fprintf(fp," ", );
``````
fclose(fp);
}
fprintf和printf类似,只是前面加 fp(文件指针变量名)
文件名.格式 在当前目录下就可以直接用,如果需要指明路径就必须多加转义字符\
如:C:\\Documents and Settings\\Administrator\\hi.txt追问

这里的fprintf(fp," ", );是紧接着printf()函数吗?fprintf(),printf(),scanf()这三个函数的顺序应该怎样排呢?

追答

不是,是把printf()换成fprintf(fp," ", );这样就写入文件了,printf()是输出到屏幕

追问

哦,那可不可以在屏幕上输出的同时也在文件中写入呢?

追答

这个好像不能同时的,这个不确定了
又查了下,没有可以同时的。

第2个回答  2012-04-10
if((fp=fopen("information.txt","a"))==NULL)//这里的“a”表示追加
{
printf("不能打开文件!\n");
exit(0);
}追问

我已经试过了,但不知在哪个地方加入,还fprintf()函数和fscanf()函数也不知用在什么地方。

追答

给你举个例:
void append()
{
//clrscr();
if((fp=fopen("information.txt","a"))==NULL)
{
printf("不能打开文件!\n");
exit(0);
}

相似回答