我有一个 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。