[原创]你知道为什么吗??

xiaosatan 2003-09-14 01:11:43
//程序如下:
#include "stdio.h"

struct employe{
char num[6];
char name[8];
char sex[3];
int age;
char add[20];
float salary;
char state[8];
char class[4];
}em[10];

void main()
{
FILE *fp;
int i=0;
if((fp=fopen("out.dat","w"))==NULL)
{printf("Error,can not open file 'out.dat'!");exit(1);}
printf("\n Num Name Sex Age Addr Salary State Class \n");
for(i=0;i<4;i++)
{scanf("%s %s %s %d %s %f %s %s",em[i].num,em[i].name,em[i].sex,
&em[i].age,em[i].add,&em[i].salary,em[i].state,em[i].class);
fwrite(&em[i],sizeof(struct employe),1,fp);
}
fclose(fp);
}

input data:
Num Name Sex Age Addr Salary State Class
001 Liming m 25 Dong 125.50 good univ
002 Wangjun f 40 Nan 89.00 well coll
003 Zhangli m 35 Xi 131.00 comm poly
004 Zhaowei m 50 Bei 155.50 good univ

以上编译连接通过,输入数据是出现如下问题

在vc++6。0中出现错误:“floating points are unloaded。”
把上面改成scanf("…… %f……",……,&(em[i].salary),……);则调试通过。

在tc2.0中出现错误:“floating point is unlinked!"
照上面改法仍无法通过。

奇怪!数据输入到浮点数就无法输入。请各位大虾不吝赐教。



...全文
30 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaosatan 2003-09-16
  • 打赏
  • 举报
回复
用fprintf是可以不过挺麻烦,不知为什么用fwrite不对?
wcq8303 2003-09-14
  • 打赏
  • 举报
回复
嗯,确实不对,所以你也必须将输出到文件的格式改变
你可以改用
fprintf(fp,"%s,%s....",......);格式.
该函数是将数据打印到文件里,fp 是个文件指针
xiaosatan 2003-09-14
  • 打赏
  • 举报
回复
哦!我想起来了,用逗号行是行。但是如果你再用fread(&em[i],sizeof(structemploye),1,fp);读出你会发现输出结果可能不对了。
tolixiaohui 2003-09-14
  • 打赏
  • 举报
回复
tc bug
wcq8303 2003-09-14
  • 打赏
  • 举报
回复
那就是你输入的行式不正确,改进逗句后,输入一个字符串或数字后就要再输入一个逗句后才能输第二个数据.我改成逗号试过了,可以!
xiaosatan 2003-09-14
  • 打赏
  • 举报
回复
改成逗号我也试了,还是不行!
wcq8303 2003-09-14
  • 打赏
  • 举报
回复
另外你应该注意,字符数组存储的字符串长度为数组长度-1
在scanf语句中,最好还是用逗号来区分,用空格会出现歧义

wcq8303 2003-09-14
  • 打赏
  • 举报
回复
这样改下就没事了.把SCANF语句中的空格改成逗号
#include "stdio.h"

struct employe{
char num[6];
char name[8];
char sex[3];
int age;
char add[20];
float salary;
char state[8];
char class1[4];
}em[10];

void main()
{
FILE *fp;
int i=0;
if((fp=fopen("out.dat","w"))==NULL)
{printf("Error,can not open file 'out.dat'!");exit(1);}
printf("\n Num Name Sex Age Addr Salary State Class \n");
for(i=0;i<4;i++)
{scanf("%s,%s,%s,%d,%s,%f,%s,%s",em[i].num,em[i].name,em[i].sex,
&em[i].age,em[i].add,&em[i].salary,em[i].state,em[i].class1);
fwrite(&em[i],sizeof(struct employe),1,fp);
}
fclose(fp);
}

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧