bonjour
quel est la difference entre %s et %c
dans le scanf
char c;
(ex: scanf("%c",&c");
scanf("%s",&c");

bonjour
quel est la difference entre %s et %c
dans le scanf
char c;
(ex: scanf("%c",&c");
scanf("%s",&c");
bonjour
provoque un depassement de memoire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 char c; scanf ("%s", &c);
%s pour lire une chaîne.
%c pour lire un caractère.
Donc, comprends ton erreur ici.Envoyé par brakeche

qu est ce que tu veut dire pas depassement de memoire
Jveux dire que quand tu donnes un specificateur %s, il faut prevoir une zone suffisament grande pour que scanf puisse y stoquer tous les caracteres de la chaine saisie (+ le caractere nul)
En l'occurence, "c" ne tient que sur 1 caractere, donc scanf va commencer à ecrire à l'adresse de c puis va continuer dans la memoire en faisant n'importe quoi

moi dans mon programme j'utilise une variable c pour faire un test
car c l'utilisateur qui entre o( oui) s'il veut continuer ou n sil veut arreter
donc j'utilise quoi?
Alors, utilise
Attention, ici c est un int (fgetc retourne int)
Code : Sélectionner tout - Visualiser dans une fenêtre à part c = fgetc(stdin);
tu veux bien m'expliquer le comportement de cette fonction dans le codeEnvoyé par Gruik
cf. man fgetc
fgetc lit un caractère dans le FILE * donné en argument et renvoie son code ASCII en sortie.
S'il y a erreur ou si la fin du fichier est atteinte, il renvoie EOF.
Pas suffisant. Pour un "o/n", il faut taperEnvoyé par Gruik
o<enter> ou n<enter>. Il faut donc 2 lectures, sinon, on se retrouve encore avec le problème du stdin non vide.
C'est pourquoi je préconise dans tous les cas d'utiliser fgets(), comme expliqué ici :
http://emmanuel-delahaye.developpez....tes.htm#saisie
http://emmanuel-delahaye.developpez....s.htm#fichiers
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 char line [4]; fgets(line, sizeof line, stdin); c = line[0]; /* ou *line */
http://emmanuel-delahaye.developpez.com/notes.htm#fgetcEnvoyé par lucky31
Au temps pour moi.Envoyé par Emmanuel Delahaye
Dans ce cas la, il peut rester avec son scanf("%c", &c);
ça sera ptet plus simple
Ben non, ce sera le même problème...Envoyé par Gruik
Oui, il faut toujours appuyer sur O ou N + entrée mais yaura pas à vider stdin (enfin j'espere)
S'il veut faire des E/S par la suite, si, c'est inévitable.Envoyé par Gruik
De toute façon, on fait toujours place nette lorsqu'on joue avec sdtin.
Comment tu fait tes scanf toi?Envoyé par brakeche
moi je fait plutot:Efin je pensse que c'est un erreur de phape...
Code : Sélectionner tout - Visualiser dans une fenêtre à part scanf("%c",&c);
"Prenez le temps d'aller lentement..."Envoyé par miron
Comme disait mon grand-père qui était toujours à l'heure :
"Quand tu es pressé, va lentement"
A moins de rentrer 0.Envoyé par Gruik
![]()
Et comment j'arrive a l'heure?Envoyé par Emmanuel Delahaye
![]()
Partager