0
我寫一個程序,讀取用戶輸入,但我不希望給任何上限,它的大小,所以我決定將它的內存動態如下:字符內存分配
int main(int argc, char const *argv[]) {
char ** INPUT;
char * inputSize;
int cl;
printf("Enter your operation here: \n");
scanf("%s", INPUT);
for(cl = 0; INPUT[cl] != '\0'; ++cl);
inputSize = (char *) malloc((cl + 1) * sizeof(char));
return 0;
}
這個程序編譯和運行,但進入它與下面的錯誤終止後輸入:
Segmentation fault: 11
我剛開始學習指針,所以我將不勝感激有人指出錯誤,我正在做。謝謝!
您沒有爲INPUT分配空間。在你修復之後char **的原因是什麼? – drescherjm
要做你想做的事(無限的輸入行長度),你需要讀取塊,如果行不結束塊的結尾,你需要閱讀更多。一旦讀完所有的塊(例如鏈接列表),就可以分配一個緩衝區並將它們組合(如果需要)。 – hyde
噢,我已經改變了它,因爲之前我只是分配給INPUT與相同的錯誤。 –