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