Faire un if avec un char

Résolu/Fermé
Utilisateur anonyme - Modifié par crapoulou le 18/03/2011 à 17:48
 t es con? - 21 mai 2016 à 11:04
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!

A voir également:

3 réponses

Bilow Messages postés 1014 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
18 mars 2011 à 17:31
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
18 mars 2011 à 18:15
C'était nécessaire d'en mettre des centaines.
0
Merci infiniement :)
0