Problème Buffer

Fermé
Ruben - 30 déc. 2020 à 18:54
wytekrow Messages postés 8 Date d'inscription lundi 30 novembre 2020 Statut Membre Dernière intervention 9 juillet 2021 - 30 déc. 2020 à 19:26
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
A voir également:

1 réponse

wytekrow Messages postés 8 Date d'inscription lundi 30 novembre 2020 Statut Membre Dernière intervention 9 juillet 2021 2
30 déc. 2020 à 19:26
bonjour,

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