|
![]() | 作者: lwei889 [lwei889]
![]() |
登录 |
#define N 5 #include <stdio.h> struct student { long num; char name[15]; float score; }stu[N]; main() { void print(struct student s[]); int i; printf("\nplease input a record 'num,name and score':"); for(i=0;i<5;i++) scanf("%ld%s%f",&stu[i].num,stu[i].name,&stu[i].score); print(stu); } void print(struct student s[]) { int i; for(i=0;i<5;i++) printf("%ld\t%s\t%.0f\n",s[i].num,s[i].name,s[i].score); } 这个程序很简单,但就是在循环输入的情况下,老是有下面的错误信息 scanf : floating point formats not linked Abnormal program termination 我曾在一本参考书上看到过,说这是tc内部本身的问题,在vc++6.0上调试 就能通过,我也试了,的确能通过! 我想问一下,这个错误的信息到底是什么原因造成,是 tc的问题 还是 程序存在 问题????? |
地主 发表时间: 12/15 16:17 |
![]() | 回复: 286 [unique] ![]() |
登录 |
scanf("%ld%s%f",&stu[i].num,stu[i].name,&stu[i].score); 改成: scanf("%ld,%s,%f",&stu[i].num,stu[i].name,&stu[i].score); |
B1层 发表时间: 12/15 16:36 |
![]() | 回复: lwei889 [lwei889] ![]() |
登录 |
按照你的改后,是可以了,但在输入时会有问题,就是 %ld,%s,%f 以逗号为分隔,但在输入字符也就是姓名时,会把‘,’(%s好象是以空格做结束标志的)当作一个字符而不是分隔符,这样后面的数据就会和名字合在一起。 当我输入 99101,lwei,80.3 时 输出结果: 99101 lwei,80.3 0 我试图把输入的顺序调整一下,但还是不行,当我在lwei后面输入空格再输入‘,’ 只能输入一组数据,其他全 0 的信息 !! 能否详细解释一下吗?? |
B2层 发表时间: 12/15 17:05 |
![]() | 回复: 286 [unique] ![]() |
登录 |
半角逗号. |
B3层 发表时间: 12/15 17:32 |
![]() | 回复: lwei889 [lwei889] ![]() |
登录 |
我用的tc是英文版的,是在dos状态下运行的,不能出现中文的,我不知道会不会有半角和全角之分,但还是不能正常运行 我真的很想知道这个问题的根源所在,我也知道我在这个论坛上不只一次的问问题,当然我对于别人的问题我要是知道的话, 我也会尽我最大的努力回答的,但我现在的知识太有限了,比起老大和各位斑竹来说,我可能比一粒沙子还要渺小, 所以我正在努力的学习。 我希望看到此贴的人给点详细的提示,也希望286再看到的话,能给点详细说明。 谢谢拉! [此贴被 子木(lwei889) 在 12月16日17时54分 编辑过] |
B4层 发表时间: 12/16 17:34 |
![]() | 回复: 286 [unique] ![]() |
登录 |
有人找我,没时间看你的贴子了. 下面可能对你有帮助,你再试试. ------------------------------------------------------------ Visual C++ 1.5 Turbo C 2.0 windows 98 近日遇到下面这个源程序, 编译无误,可运行总是出错。 #include<stdio.h> #include<dos.h> void main() { char far *p; unsigned seg,off; p=MK_FP(0xb000,0x20); seg=FP_SEG(p); off=FP_OFF(p); printf("far p %fp,segment%04x,offset%0x\n",p,seg,off); } 在MS visual C++ 1.5 下编译运行,则显示: run-time error R6002 - floating-point support not loaded 在Turbo C 2.0下编译运行,则显示: printf : floating point formats not linked Abnormal program termination 是不是头文件少写了?或者设置不对?或者这个程序不能在Windows 9X下运行?请各位大侠指点,小弟谢了! 回答: 这条错误信息的含义是没有链接浮点库。一般出现这条错误信息是因为在调用scanf、printf之前没有使用过浮点运算,解决的办法也很简单,随便给浮点数赋个值就行了。不过你的程序不是因为这个原因,你的程序就没有使用浮点型,而是printf的格式字符写错了。应该是%Fp,而不是%f。%Fp表示输出远指针,而&f表示输出浮点数。注意大小写。 此问题由李海回答。 |
B5层 发表时间: 12/16 18:18 |
![]() | 回复: lwei889 [lwei889] ![]() |
登录 |
#define N 5 #include <stdio.h> struct student { long num; char name[15]; float score; }stu[N]; main() { void print(struct student s[]); int i; clrscr(); printf("\nplease input a record 'num,name and score':"); for(i=0;i<5;i++) { printf("\ninput num:"); scanf("%ld",&stu[i].num); printf("\ninput name:"); scanf("%s",stu[i].name); printf("\ninput score:"); scanf("%Fp",&stu[i].score); /这行有改动/ } print(stu); getch(); } void print(struct student s[]) { int i; for(i=0;i<5;i++) printf("%ld\t%s\t%f\n",s[i].num,s[i].name,s[i].score); } 当我把程序改成这样时,输出s[i].score的值全是 0,其它正常 当我把这个程序再改一下时,程序就不能正常运行 #define N 5 #include <stdio.h> struct student { long num; char name[15]; float score; }stu[N]; main() { void print(struct student s[]); int i; clrscr(); printf("\nplease input a record 'num,name and score':"); for(i=0;i<5;i++) { printf("\ninput num:"); scanf("%ld",&stu[i].num); printf("\ninput name:"); scanf("%s",stu[i].name); printf("\ninput score:"); scanf("%Fp",&stu[i].score); /这行有改动/ } print(stu); getch(); } void print(struct student s[]) { int i; for(i=0;i<5;i++) printf("%ld\t%s\t%Fp\n",s[i].num,s[i].name,s[i].score); /%f--%Fp/ } 执行了以后结果我的c源程序变成了这样的: Turbo C Configuration File d e f g h i j k l m n o p q r s t u v w x y z { | } ~ � d ,D -� E:\TC\INCLUDE .� E:\TC\LIB /P 0 32 1 25 2 100 3 4 * 5 * 6 * 7 * 8 * 9 * : * ; * < * =� > 8 ?P @D E:\TC AP �� [此贴被 子木(lwei889) 在 12月16日21时37分 编辑过] |
B6层 发表时间: 12/16 21:43 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号