#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
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