作了一个员工工资表:运行的时候怎么出现:先是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); } }
请教各位大虾!
----------------解决方案--------------------------------------------------------
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里面还是有问题的!
----------------解决方案--------------------------------------------------------