2016-11-06 20 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

あなたが望む(無制限の入力行の長さを)行うには、チャンクを読み込む必要があります。また、行がチャンクの終わりで終わらない場合は、さらに読む必要があります。すべてのチャンクを(リンクリストなどに)読み込んだら、1つのバッファを割り当てて(必要に応じて)結合することができます。 – hyde

+0

ああ、前と同じようにINPUTに割り当てていたのと同じように変更しました。 –

答えて

0

ありがとう、私はちょうどgetlineを使用して、すべてunsigned_tバッファに割り当てました。それは動作します。