(c), probleme condition
Résolu
ugo
-
pyschopathe Messages postés 1974 Date d'inscription Statut Membre Dernière intervention -
pyschopathe Messages postés 1974 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'aimerais crée une condition qui verifie une chaîne de caractère du style :
char nom[100];
scanf("%s",nom);
printf("%s\n",nom);
if (nom == mon_nom)
{
printf("ça marche");
}
Mais le problème c'est que la condition ne marche que avec les nombres =/ je sais que c'est possible ce que je demande mais je ne sais pas comment , merci de vos réponses en avance.
j'aimerais crée une condition qui verifie une chaîne de caractère du style :
char nom[100];
scanf("%s",nom);
printf("%s\n",nom);
if (nom == mon_nom)
{
printf("ça marche");
}
Mais le problème c'est que la condition ne marche que avec les nombres =/ je sais que c'est possible ce que je demande mais je ne sais pas comment , merci de vos réponses en avance.
A voir également:
- (c), probleme condition
- Excel cellule couleur si condition texte - Guide
- Excel condition ou - Guide
- Excel soustraction avec condition ✓ - Forum Excel
- Excel champ calculé avec condition - Forum Excel
- Nbval avec condition - Forum Excel
4 réponses
strcmp est la fonction qu'il te faut pour comparer deux chaines de caractères. Elle renvoie 0 si les deux chaines sont identiques. man strcmp pour plus d'infos.
Salut
En C, pour comparer deux chaînes, on utilise strcmp ou mieux encore strncmp de string.h. Si tu utilises l'opérateur ==, tu compares les adresses, qui sont bien évidemment différentes, à moins d'utiliser un pointeur pointant sur nom (mais bon ^^).
A la place de :
teste :
N'oublie pas qu'il y aura le '\n' de stocker dans ta chaîne si il y a la place. Donc, stocke-le aussi dans mon_nom.
Et, je te conseille plutôt d'utiliser fgets que scanf("%s",nom); pour des raisons de sécurités.
Cdlt
En C, pour comparer deux chaînes, on utilise strcmp ou mieux encore strncmp de string.h. Si tu utilises l'opérateur ==, tu compares les adresses, qui sont bien évidemment différentes, à moins d'utiliser un pointeur pointant sur nom (mais bon ^^).
A la place de :
if (nom == mon_nom)
teste :
if (strncmp(nom,mon_nom,sizeof nom)==0)
N'oublie pas qu'il y aura le '\n' de stocker dans ta chaîne si il y a la place. Donc, stocke-le aussi dans mon_nom.
Et, je te conseille plutôt d'utiliser fgets que scanf("%s",nom); pour des raisons de sécurités.
Cdlt
Salut fiddy, pourrais-tu m'expliquer pourquoi fgets est plus sécurisé que scanf stp ? Mon C est un peu rouillé ^^.
edit : En fait, je viens de me souvenir que fgets utilisait un tampon pour stocker la chaîne et qu'on pouvait spécifier le nombre de caractères à lire... Ceci expliquant celà, inutile de te fatiguer à moins que tu aies des précisions ou corrections à apporter...
edit : En fait, je viens de me souvenir que fgets utilisait un tampon pour stocker la chaîne et qu'on pouvait spécifier le nombre de caractères à lire... Ceci expliquant celà, inutile de te fatiguer à moins que tu aies des précisions ou corrections à apporter...