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

  1. Bilow Messages postés 171 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
    1. Utilisateur anonyme
       
      C'était nécessaire d'en mettre des centaines.
      0
    2. 5hplustard
       
      Merci infiniement :)
      0
  2. seo610 Messages postés 705 Statut Membre 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
    1. Utilisateur anonyme
       
      TOER
      0
    2. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
       
      Bonjour,
      Qu'as-tu voulu dire ?
      0
    3. Utilisateur anonyme
       
      J'ai voulu dire "TOER"
      0
    4. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
       
      Et ca veut dire quoi ?
      0
    5. Utilisateur anonyme
       
      Ça veut dire "TOER"
      0
  3. francis
     
    strcmp
    0
    1. snooze
       
      tu l'a aidé mec, enterré ton mugen
      0
    2. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
       
      mugen ? C'est quoi ?
      0