Faire un if avec un char

Résolu
Utilisateur anonyme -  
 t es con? -
Bonjour,

Je fais cela:

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

int main()  
{  
    char alec[100];  
    printf ("DESU DESU [...] DESU\n");  
    scanf("%s", alec);  
    if (alec == 'hai')  
       printf ("Desu.\n");  
    else  
        printf ("noob.\n");  
    getch();  
    return 0;  
}


Mais ça fonctionne pas.
J'ai essayé de mettre 'hai' et "hai", mais ça ne fonctionne pas.
Help!

3 réponses

Bilow Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   117
 
Salut !

Tu ne dois pas confondre la ntion de caractère avec les chaînes.
Tu déclares bien ta variable, ensuite :

Des apostrophes ' ', à l'intérieur, tu ne peux y mettre qu'un seul caractère ! Pas plusieurs. Un char (' ') correspond à un nombre, donc tu peux comparer avec ==.

Des guillemets " ", tu peux y mettre un ou plusieurs caractères. Cela correspond à un tableau de caractères ' '. Tu ne peux donc pas le comparer avec ==, mais avec strcmp() (comme déjà dit plus haut, mais sans explications).

Exemple pour un caractère :
char caractere;
scanf("%c", &caractere); // N'oublie pas l'éperluette & ! N'entrer qu'un seul caractère.
if(caractere == 'a'){ // Si c'est un 'a'
printf("C'est un a");
}
if(caractere == 13){ // Un char vaut plus ou moins un nombre. '\n' vaut 13 (retour à la ligne)
printf("C'est un retour à la ligne.");
}


Et pour les chaînes de caractère :
char chaine [100];
scanf("%s", chaine);
if(strcmp(chaine, "haha")){
// Ils sont différents
printf("Differents.\n");
}
else{
printf("Ok.\n");
}


strcmp() renvoi 0 si les chaines entrées sont égales, et un autre nombre si elles diffèrent.

Fais aussi attention au buffer overflow. Et essaie aussi de quand tu as un superlong texte qui sert pas à grand chose à poster, ne l'envoi pas. Tes "Desu", tu pouvais en mettre une dizaine et c'était bon ;)

Bye ;)
3
Utilisateur anonyme
 
C'était nécessaire d'en mettre des centaines.
0
5hplustard
 
Merci infiniement :)
0
seo610 Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   102
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char alec[100];
printf ("DESU DESU [...] DESU\n");
scanf("%s", alec);
if (strcmp(alec,"Hai")==0)
printf ("Desu.\n");
else
printf ("noob.\n");
getch();
return 0;
}


fait attention de faire H majuscule...
2
Utilisateur anonyme
 
TOER
0
Bilow Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   117
 
Bonjour,
Qu'as-tu voulu dire ?
0
Utilisateur anonyme
 
J'ai voulu dire "TOER"
0
Bilow Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   117
 
Et ca veut dire quoi ?
0
Utilisateur anonyme
 
Ça veut dire "TOER"
0
francis
 
strcmp
0
snooze
 
tu l'a aidé mec, enterré ton mugen
0
Bilow Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   117
 
mugen ? C'est quoi ?
0