IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

[Débutant] Assigner une valeur à un char


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 68
    Points : 34
    Points
    34
    Par défaut [Débutant] Assigner une valeur à un char
    Bonjour, voici mon beau code. (ci-dessous)

    J'essaie de faire un petit jeux de OXO, je n'en suis qu'au début là, mais déjà des problèmes interviennent...

    "Incompatible type in assignment"

    J'ai ça pour presque toutes mes lignes lors de la compilation...

    Quel est le problème ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char *argv[]) {
      int tempcase=0;
      char case01[2], case02[2], case03[2], case04[2], case05[2], case06[2], case07[2], case08[2], case09[2];
      case01 = "-";
      case02 = "-";
      case03 = "-";
      case04 = "-";
      case05 = "-";
      case06 = "-";
      case07 = "-";
      case08 = "-";
      case09 = "-";  
      while (1) {
        system("CLS");
        printf("%s | %s | %s\n%s | %s | %s\n%s | %s | %s", case01, case02, case03, case04, case05, case06, case07, case08, case09);      
        printf("\nQue veut tu jouer ? ");
        scanf("%d", &tempcase);
        if (tempcase >= 1 && tempcase <= 9) {
          if (tempcase == 1) { case01 = "x"; }
          if (tempcase == 2) { case02 = "x"; }
          if (tempcase == 3) { case03 = "x"; }
          if (tempcase == 4) { case04 = "x"; }
          if (tempcase == 5) { case05 = "x"; }
          if (tempcase == 6) { case06 = "x"; }
          if (tempcase == 7) { case07 = "x"; }
          if (tempcase == 8) { case08 = "x"; }
          if (tempcase == 9) { case09 = "x"; }
        } else {
          printf("\nMauvais nombre");
          system("PAUSE");       
        }
      }
      printf("Fin du jeux !");
      system("PAUSE");	
      return 0;
    }
    Merci d'avance

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Assigner une valeur à un char se fait avec les simples quotes: 'c' les doubles étant pour des chaines (char *) !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: [Débutant] Assigner une valeur à un char
    Citation Envoyé par dib258
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      char case01[2], case02[2], case03[2], case04[2], case05[2], case06[2], case07[2], case08[2], case09[2];
    Tu devrais te renseigner sur ce qu'est un 'tableau' en C...

    Ensuite, pour affecter une chaine, on utilise strcpy() ou un de ses frères... Pour les saisies, je déconseille scanf() (ici, mal utilisé, comme d'habitude). Voir ceci :

    http://emmanuel-delahaye.developpez....tes.htm#saisie
    http://emmanuel-delahaye.developpez....s.htm#fichiers
    Pas de Wi-Fi à la maison : CPL

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 68
    Points : 34
    Points
    34
    Par défaut
    Oula, en effet, on utilise souvent le scanf(); mal... o_O

    Mais je pense que c'est parce que ca marche et facilement : /

    (Tant qu'on a pas les retour abberant qu'ils disent...)

    Mon code marche pour l'instant
    Mais c'est juste pour faire des test !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char *argv[]) {
      int tempcase=0, tempsigne=0;
      char case01[5], case02[5], case03[5], case04[5], case05[5], case06[5], case07[5], case08[5], case09[5];
      char *str1 = "-", *str2 = "X", *str3 = "O";
      strcpy(case01, str1);
      strcpy(case02, str1);
      strcpy(case03, str1);
      strcpy(case04, str1);
      strcpy(case05, str1);
      strcpy(case06, str1);
      strcpy(case07, str1);
      strcpy(case08, str1);
      strcpy(case09, str1);
      while (1) {
        system("CLS");
        printf("-------------\n| %s | %s | %s |\n| %s | %s | %s |\n| %s | %s | %s |\n-------------", case01, case02, case03, case04, case05, case06, case07, case08, case09);      
        printf("\nQuel case veux tu jouer ? ");
        scanf("%d", &tempcase);
        printf("\nQuel signe veux tu choisir ? ");
        scanf("%d", &tempsigne);
        if (tempcase >= 1 && tempcase <= 9 && tempsigne >= 1 && tempsigne <= 2) {
           switch (tempcase) {
             case 1 :
               if (tempsigne == 1) { strcpy(case01, str2); } 
               if (tempsigne == 2) { strcpy(case01, str3); }
               break;
             case 2 :
               if (tempsigne == 1) { strcpy(case02, str2); }
               if (tempsigne == 2) { strcpy(case02, str3); }
               break;
             case 3 :
               if (tempsigne == 1) { strcpy(case03, str2); }
               if (tempsigne == 2) { strcpy(case03, str3); }
               break;
             case 4 :
               if (tempsigne == 1) { strcpy(case04, str2); }
               if (tempsigne == 2) { strcpy(case04, str3); }
               break;
             case 5 :
               if (tempsigne == 1) { strcpy(case05, str2); }
               if (tempsigne == 2) { strcpy(case05, str3); }
               break;
             case 6 :
               if (tempsigne == 1) { strcpy(case06, str2); }
               if (tempsigne == 2) { strcpy(case06, str3); }
               break;
             case 7 :
               if (tempsigne == 1) { strcpy(case07, str2); }
               if (tempsigne == 2) { strcpy(case07, str3); }
               break;
             case 8 :
               if (tempsigne == 1) { strcpy(case08, str2); }
               if (tempsigne == 2) { strcpy(case08, str3); }
               break;
             case 9 :
               if (tempsigne == 1) { strcpy(case09, str2); }
               if (tempsigne == 2) { strcpy(case09, str3); }
               break;       
           }
        } else {
          printf("\nMauvais nombre");
          system("PAUSE");       
        }
      }
      printf("Fin du jeux !");
      system("PAUSE");	
      return 0;
    }
    Merci beaucoup de votre aide

  5. #5
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    D'autres solutions sont possibles mais je pense que tu trouveras ma version de ton programme plus "légère"...

    Remarque: J'ai tenté de garder l'idée que tu as eu pour que tu puisses rapidement voir comment je me suis débrouillé à rendre ce code plus léger...

    Jc

    Edition: En y réflechissant, ça me démange tous ces strcpy pour une simple modification de caractères... Je vais changer le code, ;-)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    int main(int argc, char *argv[]) {
      int tempcase=0, tempsigne=0;
      int i;
      char cases[9];
      char symb[3] = {'-','X','O'};
     
      for(i=0;i<9;i++)
         cases[i] = symb[0];
     
      while (1) {
        system("CLS");
     
        //Ligne horizontale
        printf("-------------\n");
        for(i=0;i<9;i++)
           {
           //Affiche les lignes verticales et la case
           printf("| %c ", cases[i]);
           //Saut de lignes toutes les trois cases
           if( i%3 == 2)
             printf("|\n");
    	}
        //Ligne horizontale
        printf("-------------\n");
     
     
        printf("\nQuel case veux tu jouer ? ");
        scanf("%d", &tempcase);
        printf("\nQuel signe veux tu choisir ? ");
        scanf("%d", &tempsigne);
        if (tempcase >= 1 && tempcase <= 9 && tempsigne >= 1 && tempsigne <= 2) {
            cases[tempcase-1]=symb[tempsigne];
           }
         else {
          printf("\nMauvais nombre");
          system("PAUSE");       
        }
      }
      printf("Fin du jeux !");
      system("PAUSE");   
      return 0;
    }

Discussions similaires

  1. assigner une valeur à la propriété text d'un label
    Par Abac_Angelique dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/11/2007, 15h06
  2. [débutant] renvoyer une valeur
    Par mitherkiller dans le forum C
    Réponses: 18
    Dernier message: 19/02/2007, 22h56
  3. Assigner une valeur à ComponentState
    Par slimjoe dans le forum Delphi
    Réponses: 4
    Dernier message: 22/09/2006, 21h53
  4. [Débutant] Changer une valeur dans une autre base
    Par Cyphen dans le forum Access
    Réponses: 5
    Dernier message: 18/08/2006, 15h26
  5. Vector - assigner une valeur à un élément
    Par bouazza92 dans le forum SL & STL
    Réponses: 3
    Dernier message: 23/04/2006, 13h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo