当前位置: 代码迷 >> C语言 >> 运行这个程序的时候怎么是这样的提示?
  详细解决方案

运行这个程序的时候怎么是这样的提示?

热度:144   发布时间:2004-11-22 10:17:00.0
运行这个程序的时候怎么是这样的提示?

作了一个员工工资表:运行的时候怎么出现:先是Input name:(我就输入一个名字)但是按回车键,本想会出现Input salary:但是提示我的是下面的语句:

Input salary: scanf : floating point formats not linked Abnormal program termination

程序如下:

#include "stdio.h" struct teacher { int worknum; char name[20]; float salary; }; struct teacher s[20]; main() { int i; for(i=0;i<20;i++); { printf("Input work number:"); scanf("%d",&s[i].worknum); printf("Input name:"); scanf("%s",&s[i].name); printf("Input salary:"); scanf("%f",&s[i].salary); } for(i=0;i<20;i++) { printf("%d",s[i].worknum); printf("%s",s[i].name); printf("%f\n",s[i].salary); } }

请教各位大虾!

搜索更多相关的解决方案: 工资  Input  salary  提示  

----------------解决方案--------------------------------------------------------

scanf("%s",&s[i].name); 试一下改成

scanf("%s",(&s[i]).name);


----------------解决方案--------------------------------------------------------

你是在什么编译器上运行的,我在VC6。0上调试没有问题呀!


----------------解决方案--------------------------------------------------------

这个问题不是你的错,是TC编译器的问题,给你一个例子:

#include <stdlib.h> #include <stdio.h> int main(void) { float *p; p=(float*)malloc(sizeof(float)); scanf("%f",p); printf("p=%f",*p); return 0; }

这个程序本身没有任何问题,编译也可以通过。但运行时的出错提示和你哪个一样。但这个程序如果将float改为int型(%f改为%d)程序将可以正常执行!即改为:

#include <stdlib.h> #include <stdio.h> int main(void) { int *p; p=(int*)malloc(sizeof(int)); scanf("%d",p); printf("p=%d",*p); return 0; }

这个问题出错的原因有关与指针的高级问题,有兴趣可以自己研究一下。


----------------解决方案--------------------------------------------------------
如果初始化一下好像就没有问题啦!!!
----------------解决方案--------------------------------------------------------

晕看了半天好像不是我们的问题是那个程序有问题!!发生了写非法内存的问题!!

你们有没有注意到!!第一个for后的――在哪里竟然有个;号晕!!


----------------解决方案--------------------------------------------------------
不过好像在tc里面还是有问题的!
----------------解决方案--------------------------------------------------------
  相关解决方案