Problème Buffer

Signaler
-
Messages postés
2
Date d'inscription
lundi 30 novembre 2020
Statut
Membre
Dernière intervention
30 décembre 2020
-
Bonjour,

J'ai un petit souci avec la fonction suivante :
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()...

Pourriez-vous m'aider ?

Configuration: Macintosh / Safari 14.0

1 réponse

Messages postés
2
Date d'inscription
lundi 30 novembre 2020
Statut
Membre
Dernière intervention
30 décembre 2020
1
bonjour,

que se passe-t-il si tu essayes de vider le buffer quand il est vide avec ton viderBuffer ?