august 发表于 2008-1-26 11:43:54

結構輸入float型的問題

  這問題好像以前用TC的時候問過,不過找不到貼子了,當時把那程序返回到VC6上問題就沒了,但今天這問題也在VC6上出現了所以想再問問。
struct
{
      int   num;
      char   name;
      float   score ;
}student;
比如這樣的個結構。為什麼不能直接這樣   scanf("%f",&student.score);給score賦值呢?

記得以前說要先定義一個float類型的變量 先接受了值,再把該值賦給 student.score
像這樣
floatx;
scanf("%f",&x);
student.score=x;

為什麼要這樣做呢?

呆呆蜗牛 发表于 2008-1-26 12:30:44

在VC6上测试了,似乎没有出什么问题,请问楼主能否把自己遇到的问题说具体一点呢,谢谢~

august 发表于 2008-1-26 13:11:13

就是編譯通過,運行時出錯,但將employee.score先初始化就沒問題

呆呆蜗牛 发表于 2008-1-26 13:36:17

额,麻烦楼主把完整的代码提供一下吧,谢谢~

可能问题在其他地方呢~

august 发表于 2008-1-26 14:22:17


#include<stdio.h>
#include<stdlib.h>
void main()
{
    struct
    {
      char name;
      char sex;
      int num;
      int age;
      float money;
    }employee;
    FILE *fp;
    char ch;
   
    if((fp=fopen("employeerecord.txt","wb"))==NULL)
    {
      printf("can't open file.\\n");
      exit(0);
    }
    do
    {
      printf("enter name:");gets(employee.name);
      printf("enter sex:");scanf("%c",&employee.sex);
      printf("enter num:");scanf("%d",&employee.num);
      printf("enter age:");scanf("%d",&employee.age);
      printf("enter money:");scanf("%f",&employee.money);

      fwrite(&employee,sizeof(employee),1,fp);//將上面內容寫入文件中
      printf("continue(y/n)?");
      fflush(stdin);
                                          ch=getchar();
      fflush(stdin);
    }while(ch=='y');
    fclose(fp);
}

就是這樣, 原來是自己的問題 少寫了個fflush(stdin)
不過在TC上確實是有我說那個問題的,人家解釋說
“scanf的浮点格式转换程序没有连接。因为TC开发时DOS下的存储资源紧缺,因此TC在编译时尽量不加入无关部分。在没发现需要做浮点转换时,就不将这个部分安装到可执行程序里。但有时TC不能正确识别实际确实需要浮点转换,因此就会出现上面错误。”
页: [1]
查看完整版本: 結構輸入float型的問題