Réponse acceptée !
Salut,
Heu... Je vois une vague logique dans ton code, par contre je ne comprends pas grand chose à tes tailles d'allocation notamment. Par exemple le premier malloc qui alloue un caractère, j'ai du mal. Et la déclaration du tableau me paraît aussi plutôt originale.
A part ça, il est souvent conseillé de coder tout en anglais (Par exemple pour ne pas avoir de problème d'accents). Et perso je préfère indenter à coup de deux espaces. Les tabs ça supporte mal les passages d'un éditeur à l'autre.
Et les déclarations dans les boucles (for int...), c'est du C avancé, ça passe pas sur les vieux compilos. Ce genre de truc peut être intéressant en C++ (Appel de constructeur que sous certaines conditions), mais en C ça n'a aucun intérêt.
Et aussi le getchar n'a pas lieu d'être dans un vraie appli console. Si toutes les applis consoles avait une pause à la fin ce serait horrible et inutilisable. Si c'est à cause de ton environnement de dev, tu peux par exemple mettre un point d'arrêt sur le return 0;.
Quelque chose comme ça :
Code C/C++ :
#include <stdio.h>
typedef char NAME[25];
int main ()
{
NAME* lpNames;
int nNamesCount;
int nI;
nNamesCount = 0;
lpNames = (NAME*)malloc(1 * sizeof(NAME));
puts("\nPour terminer, tapez EOF (Ctrl + Z) ");
while (1)
{
printf("\nVeuillez entrer un nom svp: ");
gets(lpNames[nNamesCount]);
if (feof(stdin)) break;
nNamesCount++;
lpNames = (NAME*)realloc(lpNames, (nNamesCount + 1) * sizeof(NAME));
}
printf ("Liste de noms saisis: ");
for (nI = 0; nI < nNamesCount; nI++)
{
printf ("%s ", lpNames[nI]);
}
free(lpNames);
return 0;
}