Problème Buffer

Ruben -  
wytekrow Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -
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

wytekrow Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   2
 
bonjour,

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