int lire(char *Buffer)
{
char *positionEntree = NULL;
viderBuffer();
/*On lit le texte saisi au clavier */
if (fgets(Buffer, 100, stdin) != NULL) /* Pas d'erreur de saisie ? (Buffer de 100 caractères) */
{
positionEntree = strchr(Buffer, '\n'); /* On recherche l'"Entrée" */
if (positionEntree != NULL) /* Si on a trouvé le retour à la ligne */
{
*positionEntree = '\0'; /* On remplace ce caractère par \0 */
}
else
{
viderBuffer();
}
return 1; /* On renvoie 1 si la fonction s'est déroulée sans erreur */
}
else
{
viderBuffer();
return 0; /* On renvoie 0 s'il y a eu une erreur */
}
}
Voici viderBuffer :
void viderBuffer()
{
int c = 0;
while (c != '\n' && c != EOF)
{
c = getchar();
}
}
Et voici mon main :
int main()
{
Regle rg = nouvelle_regle(rg);
//Bc bc = nouvelle_Bc();
char Buffer[101];
printf("Entrez une proposition");
lire(Buffer);
En fait une fois que je rentre une chaîne de caractère et appuie sur entrer lors de l'exécution, le programme "tourne dans le vide", il ne se passe rien et il ne s'arrête pas.
En mettant des marqueur avec printf il semblerait qu'il bug après l'appel de fgets dans la fonction lire()...