我要做的是:讀取x個字符串s_1 ... s_x的最大定義數。長度l = 1000000並存儲它們。變量x作爲輸入給出,並且表示應該是全局定義的。C:全局定義多維字符數組
我如何想做到這一點是:
全局定義指針字符指針:
char** S;
在當地,從輸入讀取X之後,對於x指針分配空間以char:
S = (char**) malloc(sizeof(char*)*x);
爲每個單個字符串在本地分配空間S_I和閱讀串入分配的空間:
while(i<x){ S[i] = (char*) malloc(sizeof(char)*1000000); scanf("%s",S[i]); i++; }
當我嘗試訪問
S[0][0]
它給出了一個內存訪問錯誤。有任何想法嗎?謝謝!
編輯:
我打印的陣列和它的工作細所以這個問題是確實是在該訪問代碼。這裏是:任何人都可以看到問題是什麼?因爲我不能...
makeBinary(){
printf("inside makeBinary()\n");
S_b = malloc(sizeof(int)*1000000*x);
length = malloc(sizeof(int)*x);
int i;
int j;
for(i=0;i<x;i++){
for(j=0;j<1000000;j++){ printf("1\n");
if(S[i][j]=='\0'){ printf("2\n");
length[i] = j;
break;
}else{
S_b[i][j] = S[i][j]-96; printf("3\n");
}
}
}
}
它打印'1',然後它崩潰。我知道代碼遠不是最優的,但現在我只想首先解決問題。謝謝!
不要投'malloc'的返回值(即實際上可能如果你沒有包含'')就是你的問題)。 S =(char **)malloc(sizeof(char *)* t);''t'這是一個錯字還是實際的代碼?如果是後者,那也可能是問題所在。 –
2013-05-02 20:50:32
你可以顯示試圖訪問S [0] [0]的代碼嗎? – 2013-05-02 20:54:29
爲什麼你明確地施加malloc的結果? – 2013-05-02 21:53:57