Probleme COMPLEEEEEXE avec les Conditions

Fermé
GnuPro Messages postés 2 Date d'inscription lundi 16 février 2015 Statut Membre Dernière intervention 16 février 2015 - Modifié par GnuPro le 16/02/2015 à 00:53
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 16 févr. 2015 à 10:39
Bonjour,

Je suis Un Nouveaux Programmeur En C , J'ai Un probleme complexe avec les condition switch if ... etc Moi je souhaite avoir un text de mon choix dés que les conditions existe , et si la premiere condition existe je veux que le programme passe a la deuxieme et l'imprimer , EX :
char p[3] ;
printf ("enter your text : ");
scanf("%s" , &p[3] );

switch (p[3] ) {
case 'a' : printf("b");
switch (p[3]) {
case 'b' : printf("a");
}

}

Le probleme c quand j'ecris a le programme me donne b , ok c bon , mais quand j'ecris ab le programme me donne que b alors il a analyser que la premiere condition . SVP aider moi :)
Le probleme est le meme quand j'utilise CASE : 'a' ou IF .......

1 réponse

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
16 févr. 2015 à 00:54
'lut, ton code ne marchera pas comme tu le souhaites:
tu alloues de la place pour 3 caractères, autrement dit 2 lettres + le NUL de fin.
Or du donnes l'adresse du 3e caractère au
scanf
, donc non seulement il y a dépassement de tampon, mais aussi tu ne peux récupérer qu'une seule lettre: la première tapée.

Corrige ça et ensuite on verra pour tes
switch
s.
0
GnuPro Messages postés 2 Date d'inscription lundi 16 février 2015 Statut Membre Dernière intervention 16 février 2015
16 févr. 2015 à 01:22
Merci a vous :) ,malgré ke j'ai pas bien compris , mais Maintenant je peux recuperer les deux lettre mais quand je tape ba il me donne seulement bbb mais quand je tappe a il me donne aaabbb , une solution svp ca fé 4 heures que je cherche comment le programme me permet d avoir mes char organisé ....
char p[2] ;
printf ("enter your text : ");
scanf("%s" , &p[2] );

switch (p[2] ) {
case 'a' : printf("aaa");
case 'b' : printf("bbb");
}
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
16 févr. 2015 à 10:04
Ce n'est pas bon.
C'est : scanf("%s", p); plutôt.
Ensuite switch(p[...]) /*avec ... le nombre qui vaut 0 ou 1 (mais pas 2).

Rappel : si tu fais char p[2], cela crée un tableau de 2 cases (p[0] et p[1]).
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
16 févr. 2015 à 10:39
Correction (j'étais fatigué quand j'ai écrit la réponse): il y a bien dépassement de tampon, et tu ne pouvais récupérer aucune lettre: p[3] est en dehors de p!
0