|
|||||||||||
| 技術(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 欄目:單片機 |
我在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 于 2005/1/25 14:03:00 發(fā)布:
改成 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 于 2005/1/25 16:32:00 發(fā)布:
謝謝csword,可是為什么原來的程序不行呢? 我試過了,csword的方法行的通。但是為什么原來的程序不行呢?看上去沒有任何錯誤并且編譯能通過,而且各種教科書上都是這么用的,為什么到了我這里就不行了呢?百思不得其解…… |
|
| 4樓: | >>參與討論 |
| 作者: csword 于 2005/1/25 16:52:00 發(fā)布:
也可以這樣: 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 于 2005/1/26 11:02:00 發(fā)布:
謝謝csword的好意,可是很遺憾 謝謝csword的好意,可是很遺憾,問題依舊出現(xiàn),請問你的E文是從哪里摘錄的?你是在vc下試的嗎?我用的是turbo c,馬上就要筆試了沒時間再去熟悉visual studio了.我不想老去麻煩別人,可是我怎么也想不出有什么解決辦法,或許先用您告訴的第一種方法折衷一下吧。 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |