C语言题,紧急,高手们帮帮忙! 如何在下面这个函数中加入文件操作来保存输入的数据?
voidAdd()//信息录入{charc='Y';intchoice;while(c=='Y'){fflush(stdin);//清除输入流的缓存区,确保不影响后面的数...
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();
}
要下次输入时不会将之前输入的数据覆盖的。 展开
{
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();
}
要下次输入时不会将之前输入的数据覆盖的。 展开
3个回答
展开全部
随便写了一个,因为不知道你的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();
}
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盘里没有创建到这个文件。
追答
我这里看以创建的啊
展开全部
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
{
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()是输出到屏幕
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if((fp=fopen("information.txt","a"))==NULL)//这租前里的“弊拍a”弊卜清表示追加
{
printf("不能打开文件!\n");
exit(0);
}
{
printf("不能打开文件!\n");
exit(0);
}
追问
我已经试过了,但不知在哪个地方加入,还fprintf()函数和fscanf()函数也不知用在什么地方。
追答
给你举个例:
void append()
{
//clrscr();
if((fp=fopen("information.txt","a"))==NULL)
{
printf("不能打开文件!\n");
exit(0);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询