次のコードでは、ユーザーにいくつかの文字列を提供するように求めています。長さ 50 の文字列の先頭を指すポインタ文字列で入力を読み取るように、2 次元のポインタ char 配列を作成します。私の問題は、最初の文字列の入力後にクラッシュし続けることです。私の問題は再割り当てに関係しています。私はそれに慣れていません..何が起こっているのかを理解するのを手伝ってもらえますか?? netbeans でデバッグしようとしましたが、realloc から作成された新しいアドレスに対するフィードバックが得られないため、興味深いものを見つけることができませんでした!!
コードは次のとおりです。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char *str,**string,buffer[50],temp[2];
int i,j,q,size,counter;
size=10;
string=(char**) calloc(size,sizeof(char*));
for (i=0; i<size; i++) string[i]=(char*) malloc(50*sizeof(char));
printf("\nGimme strings, terminate input with x");
i=0;
gets(string[i]);
temp[0]=120;//x
temp[1]='\0';
size=0;
while(strcmp(string[i],temp)!=0)
{
string=realloc(string,size*sizeof(char**));
i++;
gets(string[i]);
size++;
counter++;
}
return 0;
}
この realloc でポインターのテーブルを大きくしたい。