看板 C_and_CPP 關於我們 聯絡資訊
這這~小弟這個程式很鬼異~過年前跑的時候好好的~ 結果剛剛跑的時候卻出現錯誤!! #include <stdio.h> #include <stdlib.h> #include <string.h> void main() { FILE *TimeList; int i=0,k=0,m=0; float CompareStart_Time[10000],CompareOff_Time[10000]; char Singer[10000]; TimeList=fopen("TimeList_1000.txt","r"); while( (fscanf(TimeList,"%f %f %s",&CompareStart_Time[k], &CompareOff_Time[k],&Singer[m]))!=EOF){ <==這邊和while那行是同一行~ 礙於板面所以在這邊換行!! k++; m+=6; } printf("QQQQQ\n"); fclose(TimeList); } 請問我有哪邊有弄錯嗎? 跑到while那行C就跳出 紅色XX的視窗!! 另外想請問一下大家~小弟用的是VC6 因為是接之前學長的電腦關係~ 有看到板友說要去抓一些關於VC6的更新檔更新~請問是要去哪邊抓勒? 是Microsoft嗎? 有好心人士可以提供一下網址嗎? 謝謝囉!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.124.72.230
ledia:compile 有過和執行正不正確是兩碼子事 02/03 17:32
ledia:你的執行目錄下有 TimeList_1000.txt 嗎? 02/03 17:33
a95297:有!! 02/03 17:38
ledia:開檔完要檢查 TimeList 是不是 NULL, 還有要看資料是否太多 02/03 17:42
po953:Singer[]是char一維陣列 所以應該用%c吧不是%s 02/03 18:39
ledia:給樓上, 他用的沒錯, 有取址, 而且一次跳三格, 猜測一筆資料 02/03 23:27
ledia:只有五個字元長 (否則會出錯) 02/03 23:27
ledia:不是跳三格... 是跳六格 ... 我手打的跟腦袋裡想的不一樣= = 02/03 23:28
a95297:l大真明白我的意思~話說還是沒人回答我的問題!! 02/04 12:37
ledia:我有回啦, 看看開檔是否成功檢查 TimeList 是不是 NULL 02/04 13:08
ledia:確認資料有沒有過多, 檢查 m, k 的值有沒有超過 10000 02/04 13:08
ledia:while 那行出錯, 大致上就這兩個可能的問題了吧... 02/04 13:09
a95297:TimeList裡面確實有東西~總數也都沒有超過10000~所以我才覺 02/04 13:57
a95297:得很奇怪~為啥過個年回來會錯!! 用Dev-c去好卻沒有錯誤!! 02/04 13:57
HudsonE:k 沒超過 10000 不代表 m 沒超過 10000 呀... 02/04 18:14
a95297:自己發現了~txt檔讀進來的是字元~不能直接用float去讀@@~都 02/04 22:05
a95297:沒注意到~很謝謝大家的幫忙^^ 02/04 22:06