2016-11-06 116 views
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 

我剛開始學習指針,所以我將不勝感激有人指出錯誤,我正在做。謝謝!

+2

您沒有爲INPUT分配空間。在你修復之後char **的原因是什麼? – drescherjm

+2

要做你想做的事(無限的輸入行長度),你需要讀取塊,如果行不結束塊的結尾,你需要閱讀更多。一旦讀完所有的塊(例如鏈接列表),就可以分配一個緩衝區並將它們組合(如果需要)。 – hyde

+0

噢,我已經改變了它,因爲之前我只是分配給INPUT與相同的錯誤。 –

回答

0

感謝您的幫助,我剛剛使用了getline,並在unsigned_t緩衝區中分配了所有內容。這樣可行。