2015-06-04 16 views
-3

讓我們考慮這個數組字符指針:如何在while循環中重新分配* char []?

char *lesMots[10]; 

這是一個while循環中使用:

while(fgets(buffer, TAILLE_BUFFER, fichier)!=NULL){ 
    token = strtok(buffer, s); 
     while(token != NULL && token[0]!=13) 
     {    
      token[strlen(token)]='\0'; 
      *(lesMots + ligne)=strdup(token); 
      ligne++; 
      token = strtok(NULL, s); 
     } 
} 

我試圖重新分配* lesMots的記憶[10]因爲它會崩潰稍後如果大小不等於或大於21.

我一直在考慮重新分配數組,儘管ligne> = 10但失敗了,這就是爲什麼我不向您展示我的malloc和realloc測試。感謝你們對我的幫助。

+1

陣列不適的realloc。 'char ** lesMots = malloc(10 * sizeof(* lesMots));'而不是'char * lesMots [10];'。也是'token [strlen(token)] ='\ 0';'多餘。 – BLUEPIXY

回答

1

如果您需要能夠增加數組的大小,請使用動態分配的數組而不是靜態定義的數組。

相反的:

char *lesMots[10]; 

使用

char **lesMots = malloc(10*sizeof(*lesMots));