Probleme COMPLEEEEEXE avec les Conditions

GnuPro Messages postés 3 Statut Membre -  
ElementW Messages postés 5690 Statut Contributeur -
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

  1. ElementW Messages postés 5690 Statut Contributeur 1 293
     
    '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
    1. GnuPro Messages postés 3 Statut Membre
       
      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
    2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      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
    3. ElementW Messages postés 5690 Statut Contributeur 1 293
       
      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