永发信息网

在C语言中如何文件中的结构体数据打印出来,下面是我的程序,求大神帮忙看看,谢谢了~~

答案:3  悬赏:30  手机版
解决时间 2021-01-30 07:29
在C语言中如何文件中的结构体数据打印出来,下面是我的程序,求大神帮忙看看,谢谢了~~
最佳答案
问题在你从终端输入数据的时候,从终端输入的数据都保存在了缓存里,当你输入数据的时候你做了两个操作,一、输入数据(比如是 9);二、按回车。这样一来你的缓存里其实有两个数据9和回车,所以当你第一个scanf的时候读的是9,第二个scanf的时候读的是回车(\n)。要避免这种情况有两种方法,最直接的是每次在你调用scanf之前清除缓存【fflush(stdin);】,第二种是每次scanf调用完之后调用一次getchar(),并且返回值可以不给任何变量。

>printf("请输入第%d个人的号码:",num);
>scanf("%d",&work[num].id);
=>
printf("请输入第%d个人的号码:",num);
fflush(stdin);
scanf("%d",&work[num].id);

>printf("请输入第%d个人的号码:",num);
>scanf("%d",&work[num].id);
=>
printf("请输入第%d个人的号码:",num);
scanf("%d",&work[num].id);
getchar();
全部回答
#include
#include
int num=1;
struct WORK{
int id;
char name[20];
double salary;
};
struct WORK work[100];
void input(){
char ch;
for(num=0;num<100;num++)
{
printf("请输入第%d个人的号码:",num);
scanf("%d",&work[num].id);
printf("请输入第%d个人的姓名:",num);
scanf("%s",work[num].name);
printf("请输入第%d个人的工资:",num);
scanf("%lf",&work[num].salary);
printf("是否继续输入(Y/N):");
getchar();
scanf("%c",&ch);
if(ch == 'N'||ch == 'n')break;
//else if(ch == 'Y'||ch == 'y')
//num++;continue;
}
}
void save(){
int i=1; //先定义
FILE* file = fopen("a.txt","wb");
if(!file){
printf("文件打开失败! ");return;
}

for(;i<=num;i++)
fwrite(&work[i],sizeof(work),1,file);
fclose(file);
file = NULL;
}追问谢谢,可是不是这儿的问题啊,
fwrite(&work[i],sizeof(WORK),1,file); 这里应该有问题吧, 会写越界的。
应该是:fwrite(&work[i],sizeof(WORK[i]),1,file);
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
急求 ——得了大病休假公司不给交社保怎么办
养狗的男人通常什么性格的人?
天龙八部踢球给什么
下图表示植物光合作用的一个阶段,下列各项叙
lovelive日服为什么买不了心
补水的意思是什么啊?知道的请说下!
我约了一个女孩我说吃饭,她非要看电影啥意思
使用打印机电脑要加电源吗
10—14万可以买哪些品牌的车呢?买车的标准主
从科学的角度解释“男人为什么喜欢美女,女人
怎么能在短时间内了解一个人的性格脾气?
在济南租房子大约多少钱?
东莞五笔怎么打
8000瓦的电需要多少平方米的电缆线拜托了各位
于儿的意思是什么啊?知道的请说下!
推荐资讯
混合液中碳酸氢钠和葡萄糖的作用是什么
CF里的生化模式规则?
如果空调在客厅中间对着门的方向,能把冷风送
【窗前明月光】窗前明月光古诗后三句是什么
指色美甲地址在哪,我要去那里办事
高二休学3个月要留级吗?
苹果5屏幕很暗不能调亮是屏幕坏了吗
产嘏的意思是什么啊?知道的请说下!
凯美瑞珍珠白时间长了会不会氧化变色
我用一块80w的太阳板工作电流为4.65A充容量为
可抑制血小板聚集和黏附的药物是A.肝素B.华法
三七粉配什么效果最好
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?