Initialisation d’un grand tableau à deux dimensions en C

Je veux initialiser tous les éléments de:

char buffer[1000][1000]; 

à ' ' .

J’ai essayé

 char buffer[1000][1000] = { ' ' }; 

et

 char buffer[1000][1000] = { { ' ' } }; 

mais les deux sens ne semblent initialiser que le premier terme.

Je suis disposé à envisager des approches alternatives pour faire le travail, mais je préférerais éviter d’écrire dans ce type de code d’initialisation dans main, voire dans une méthode d’initialisation séparée.

 memset(buffer, ' ', sizeof buffer); 

Si le tableau a une durée de stockage automatique, envisagez l’allocation de tas pour éviter le débordement de la stack.

Si le tableau a une durée de stockage statique, vous devrez tout de même l’initialiser au moment de l’exécution car il est impossible d’initialiser des éléments avec une valeur non nulle sans fournir une valeur d’initialisation distincte pour chacun d’eux.

http://linux.die.net/man/3/memset

 char *buffer = malloc(1000*1000); memset(buffer, ' ', 1000*1000); 

Vous aurez envie de tester le code de retour de malloc et de remplacer les littéraux, mais c’est l’essentiel.