未知のサイズと数の文字列を書きたい char** stringList があります。
ある時点で、次のコードがあります。
static char** stringList;
static int laenge=0;
static int size=0;
void getInput(){
char input[FILENAME_MAX];
int zeilen=10;
int counter=0;
stringList = (char**) malloc(zeilen*sizeof(char*));
size = zeilen*sizeof(char*);
while(fgets(input, FILENAME_MAX , stdin) != NULL)
{
if (strlen(input) <= 100){
stringList[counter] = (char*) malloc(strlen(input));
size += strlen(input);
if (stringList[counter] == NULL){
exit(EXIT_FAILURE);
}
strcpy(stringList[counter],input);
counter++;
laenge++;
} else {
fprintf(stderr,"String longer than 100 characters\n");
}
if (counter==zeilen){
zeilen +=10;
stringList = (char**) realloc(stringList,size+10*sizeof(char));
if (stringList == NULL){
exit(EXIT_FAILURE);
}
}
}
}
必要に応じて、stringList のサイズを増やして、より多くの文字列を格納できるようにします。
Valgrind は 1 行目と 5 行目で writeerror を返し、2 行目でも readerror を返します。