看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《Ctmate (City*Mate)》之銘言: : 我要從input檔中讀入多項式的資料 : num cof 分別放係數跟指數 : 如果我要把他弄成動態記憶體要怎麼弄呢? : 怎麼跑都跑不太過... : #include <stdio.h> : #include <stdlib.h> : int main (void) : { : int k,i,y; : int **num; //原先是直接給大小 int num[10][10]; : num = (int*)malloc(0); 這樣只會new出一個int* 大小為0,而且type也跟左值不一致,這很明顯不是你想要的 假設現在是要num[k][k] 那你應該改成 num=(int**)malloc( k*sizeof(int*) ); 這樣,new出了一個int** 指向k格int*大小 之後再把new的每一格 去(int*)malloc( k*sizeof(int) ); 那才是你要的 : int **cof; //原先是直接給大小 int cof[10][10]; : cof = (int*)malloc(0); 同上 : fp = fopen("input.txt", "r"); : fscanf (fp, "%d" ,&k); : for (i=0;i<2*k;i++) : { : y=0; : fscanf(fp, "%d %d",&num[i][y],&cof[i][y]); : num[2*(i+1)]=(int*)malloc(y+1); : cof[2*(i+1)]=(int*)malloc(y+1); malloc(int _size) 參數裡面是要放空間的大小 這邊似乎不是你的本意? : while ((num[i][y]!=0 || cof[i][y]!=0)) : { : y++; : fscanf(fp, "%d %d\n",&num[i][y],&cof[i][y]); : num[2*(i+1)]=(int*)malloc(y+1); : cof[2*(i+1)]=(int*)malloc(y+1); 阿哩 上面不是new過了 怎麼這邊又new @@" : } : } 我個人猜測你現在的code跟你想要做的事情不太一樣 通常二維陣列讀入大小之後,就應該跑回圈把每一格都new出來 接著就把他當成普通的陣列使用 最後再記得free 建議你可能要再研究一下malloc的用法 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.93.39 ※ 編輯: nowar100 來自: 140.113.93.39 (10/18 02:14)