[問題] C語言array讀值問題

看板C_and_CPP (C/C++)作者 (幸福人生靠智慧)時間13年前 (2013/02/23 17:02), 編輯推噓3(308)
留言11則, 4人參與, 最新討論串1/1
 我從一文字檔中讀數字存進陣列中  然後列印array,第一次的列印值都正常  但第二次想再列印array就出現誤值 想請問這是什麼原因造成的,如何修正?謝謝。  第二次讀到的值如下所示: j=10,array_random = 1996876906 j=9,array_random = 2682796 j=8,array_random = 2683304 j=7,array_random = 1986205903 j=6,array_random = 2683896 j=5,array_random = 2684544 j=4,array_random = 1 j=3,array_random = 2682776 j=2,array_random = 0  以下為程式碼: #include <stdio.h> #define x 997 void main() { FILE *fp1; fp1 = fopen("A.txt","r");//從文字檔讀入數字 int N,num; char c; int array_random[x]; int i,j; int cnt; fscanf(fp1,"%d", &N); for(i=0; i<998; i++){ for(cnt=1; fscanf(fp1, "%d%c", &num, &c); cnt++) { array_random[cnt-1] = num; if(c == '\n') break; } printf("there are %d member in line %d: ", cnt, i+1); for(j=0; j<cnt; j++) //第一次列印陣列中的值 { printf("%d ", array_random[j]); printf("\n"); } } for(j=0; j<cnt; j++) //第二次列印陣列中的值 { printf("%d ", array_random[j]); printf("\n"); } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.97.203 ※ 編輯: wshowman 來自: 118.168.97.203 (02/23 17:22) ※ 編輯: wshowman 來自: 118.168.97.203 (02/23 17:23)

02/23 22:42, , 1F
array_ramdom 存取出界
02/23 22:42, 1F

02/24 02:05, , 2F
第二次列印,也是從array_random[0]開始印,不懂為何出界
02/24 02:05, 2F

02/24 04:41, , 3F
因為你並沒有把數字傳到你想的對應位子
02/24 04:41, 3F

02/24 04:42, , 4F
事實上你只是一值取代array_random[0]的數值而已
02/24 04:42, 4F

02/24 04:44, , 5F
if(c=='\n')break;上面那行改成array_random[i]=num;
02/24 04:44, 5F

02/24 04:44, , 6F
第二次輸出迴圈改成for(j=0;j<x;j++){...}
02/24 04:44, 6F

02/24 04:45, , 7F
我改這些就成功執行了不過我偷懶只有用10個數字
02/24 04:45, 7F

02/24 04:47, , 8F
另外如果是用\n來做分隔我比較推薦用getline這個函式
02/24 04:47, 8F

02/26 11:55, , 9F
可否提供文字檔的內容?覺得此程式許多小地方怪怪的。
02/26 11:55, 9F

02/28 12:05, , 10F
文字檔內容是用srand(time)跑出亂數,每跑一次就斷行
02/28 12:05, 10F

02/28 12:08, , 11F
wwwearn 感謝~這樣子我大致上了解了~!!!
02/28 12:08, 11F
文章代碼(AID): #1HA8MJH0 (C_and_CPP)
文章代碼(AID): #1HA8MJH0 (C_and_CPP)