Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/10/2008, à 21:51

S.William

probleme de condition avec les pointeurs en C

Bonjour et merci d'avance à ceux qui voudrait bien m'aider.

Voilà en ce moment j' apprend le C et je voudrais realiser un petit programme de rien du tout juste pour voir.

L' objectif : Le programme vous demande votre nom, vous l'entrer et en fonction du nom il donne réponse particulière. Bien sûr tous les noms seront mis dans le programme à l'avance et dans le cas ou le nom rentré ne correspond pas à un des nom prévu  le programme dira simplement qu' il ne vous connait pas.

Au départ j' ai pensé à une condition simple du type if....... else, mais comme j'ai prévu au moins 4 ou 5 noms pour que ce soit marrant c'est pas très pratique. Alors j'ai pensé au switch. Voilà le code qui refuse d'être compiler:

          
#include <stdio.h>
#include <stdlib.h>û


int main(int argc, char *argv[])


{
    long nom = 0 
    char prenom[100], 1 = alexandra, 2 = william;
    printf("Comment t'appelles-tu ? ");
    scanf("%s", prenom);
    
   switch ("%ld", prenom)
   { 
   case 1 :
     printf ("T'es ma reine");
     break;
   
   case 2 :
     printf ("Oui tu veux quoi encore ?");
     break;
  
   default:
      printf("Désolé %s ,mais je te connais pas"); 
      break;

   }
      printf("\n\n");
      getchar  ();
      getchar  ();
      return   0 ; 

   
    
}

Comme le case doit être suivit d'un entier j'ai bricoler un trucs avec les déclarations de variable mais evidemment sa ne marche pas. A la base à la place des entiers j' avais plutot mis les noms en question.


Du coup je pense que mon salut viendra plutôt avec les if et else mais là encore sa coince:

 {
    
    char prenom[100], alexandra;
    printf("Comment t'appelles-tu ? ");
    scanf("%s", prenom);
    if ( "%s",prenom == alexandra)
    {
      printf("alexandra !!!! Ma reine");
    }
     

   
      
      getchar  (); 
      getchar  ();
      return   0 ; 

}

Maintenant je me demande si je suit complètement à côte de la plaque et je n'ai rien compris des conditions avec les chaines ou alors c'est juste un détail vicieux qui m'empêche de realiser le programme

Hors ligne

#2 Le 16/10/2008, à 22:45

Link31

Re : probleme de condition avec les pointeurs en C

S.William a écrit :
char prenom[100], 1 = alexandra, 2 = william;
switch ("%ld", prenom)
if ( "%s",prenom == alexandra)

C'est quoi cette syntaxe ? Une nouvelle norme du C ?

Ce que tu dois faire, c'est une série de if :

#include <stdio.h>
#include <string.h>

// ...

char prenom[100];
scanf("%99s", prenom);

if (!strncmp(prenom, "alexandra", sizeof(prenom)))
{
	// prenom == "alexandra" ...
}
else if (!strncmp(prenom, "william", sizeof(prenom)))
{
	// prenom == "william" ...
}
else ...

Tu peux aussi mettre les chaînes "alexandra", "william"... dans un tableau de char*, comparer prenom avec chaque élément du tableau avec !strncmp(), puis faire un switch avec l'indice du tableau qui correspond.

Dernière modification par Link31 (Le 16/10/2008, à 22:46)

Hors ligne

#3 Le 16/10/2008, à 22:59

S.William

Re : probleme de condition avec les pointeurs en C

Merci c'est super pour la réponse est ce que tu pourria developper un peu pour le tableau de char* ?

Hors ligne

#4 Le 16/10/2008, à 23:23

tiky

Re : probleme de condition avec les pointeurs en C

Tu dois faire un tableau de char *, c'est-à-dire un tableau de pointeurs vers les chaînes de caractères.

const char * names[2];
names[0] = "William";
names[1] = "Fred";

ou

const char * names[2] = { "William", "Fred" };

Tu peux également faire une allocation dynamique:

const char ** names = NULL;
names = malloc( 2 * sizeof( const char * ) );
if( names != NULL )
 ....

Dernière modification par tiky (Le 17/10/2008, à 13:26)


Conseil d'expert: il vous faut un dentifrice adapté...

Hors ligne