音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

奇怪的令人瘋狂的結(jié)構(gòu)體數(shù)組問題

作者:resetnow 欄目:單片機
奇怪的令人瘋狂的結(jié)構(gòu)體數(shù)組問題
我在windows xp 下用tc2.0編關(guān)于結(jié)構(gòu)體數(shù)組的程序,如果象下面一樣編就沒問題。
#define N 2
struct student
{
int num;
float score;
}stu[N];
main()
{
int i;
scanf("%d%f",&stu[0].num,&stu[0].score);  ***********
scanf("%d%f",&stu[1].num,&stu[1].score);  ************這個地方有問題
for(i=0;i<N;i++)
printf("%d %.2f\n",stu[i].num,stu[i].score);
}
但是當把程序改成
#define N 2
struct student
{
int num;
float score;
}stu[N];
main()
{
int i;
for(i=0;i<N;i++)
scanf("%d%f",&stu[0].num,&stu[0].score);  ***********
for(i=0;i<N;i++)
printf("%d %.2f\n",stu[i].num,stu[i].score);
}
時能編譯通過,但是運行時會異常結(jié)束。并提示scanf:floating point formats not linked.
Abnormal program termination
這個問題已經(jīng)困擾我好幾天了.
請問這是怎么個原因,應(yīng)該如何解決啊

2樓: >>參與討論
csword
改成
main()
{
int i;
float TEMP;

for(i=0;i<N;i++){
  scanf("%d%f",&stu[0].num,&TEMP);
  stu[0].score=TEMP;
}  
for(i=0;i<N;i++)
printf("%d %.2f\n",stu[i].num,stu[i].score);
}


* - 本貼最后修改時間:2005-1-25 14:04:21 修改者:csword

3樓: >>參與討論
resetnow
謝謝csword,可是為什么原來的程序不行呢?
  我試過了,csword的方法行的通。但是為什么原來的程序不行呢?看上去沒有任何錯誤并且編譯能通過,而且各種教科書上都是這么用的,為什么到了我這里就不行了呢?百思不得其解……

4樓: >>參與討論
csword
也可以這樣:
extern unsigned _floatconvert; //加多這兩行
#pragma extref _floatconvert

#define N 2
struct student
{
int num;
float score;
}stu[N];
main()
{
int i;
for(i=0;i<N;i++)
scanf("%d%f",&stu[0].num,&stu[0].score);  ***********
for(i=0;i<N;i++)
printf("%d %.2f\n",stu[i].num,stu[i].score);
}

摘錄一段E文:
Floating point formats (for scanf() and related functions) are
not always linked, for savings in executable size. To force their
inclusion, put the following somewhere in your source files:
extern unsigned _floatconvert;
#pragma extref _floatconvert

大意是編譯器為了減小可執(zhí)行代碼的大小一般不把float型指針格式相關(guān)的代碼連接進去,需要通過這兩句:
extern unsigned _floatconvert;
#pragma extref _floatconvert
強制編譯器連接進去.

都是編譯器的錯.

* - 本貼最后修改時間:2005-1-25 16:56:47 修改者:csword

5樓: >>參與討論
resetnow
謝謝csword的好意,可是很遺憾
謝謝csword的好意,可是很遺憾,問題依舊出現(xiàn),請問你的E文是從哪里摘錄的?你是在vc下試的嗎?我用的是turbo c,馬上就要筆試了沒時間再去熟悉visual studio了.我不想老去麻煩別人,可是我怎么也想不出有什么解決辦法,或許先用您告訴的第一種方法折衷一下吧。

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
有人用過Motorola的單片機么  我快郁悶死了
初學(xué)的請教AT89S52的問題
單片機與網(wǎng)絡(luò)的連接
哪位大蝦用過萬利51仿真器,型號為ME-52H,肯請幫忙!
本人想選一款128*64的LCM,哪位能向我推薦幾款性價比高的產(chǎn)品?
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號