Débutant en C

Résolu
Bonjour à tous,
voici une question certainement toute bête pour les pros du C...

J'ai une erreur à la compil en voulant faire :

char vers[5];
vers = 'V0190';

??? quelqu'un pourrait me dire pourquoi et me dire koi faire ?

Merci d'avance pour votre aide.
A+

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Je ne suis pas sur mai je crois qu'il fo que tu mette :
    vers = "VO191";
    1. Moi j t suggere d'initialiser le tableau "vers" au debut de la declaration a savoir

      char vers{VO191};
      1. Bonsoir,

        Moi, j'écrirais l'instruction suivante :

        char vers [5] = { 'V', '0', '1', '9', '0' };

        a+
        1. Je pense que la meilleure maniere d'initialiser au début mais sinon tu peux toujours le remplir case par case : vers[0]='V';
          1. -Moi je te conseille soit de l'initialiser au debut

            char vers[6]="V0190"; //6 parce que y a un caractere nul si tu veux que ca soit une chaine de caractere
            ou
            char vers[]="V0190";

            -ou sinon y a l'option de declarer ton tableau et de le remplir apres...

            #include <string.h>

            char vers[6];
            strcopy(vers,"V0190");

            -et voila! (y a toujours aussi la methode d'allocation dynamique... mais bon :P)
            1. si tu comptes utiliser ce char [] comme une chaîne de caractères (pour comparaisons, etc.)

              tu as interet a ajouter une case et a mettre la caractere '\0' (fin de chaîne)

              voila ...
            2. @etienne aussi, mais un autre ;-)Salut,
              Ben non, en C lorsque l'on écrit
              char vers[]="V0190";
              le compilateur va réserver le nombre exact de caractères permettant de stocker la chaine correctement délimitée, caractère /0 compris donc.
              Aucun problème à craindre de cette syntaxe.

              A++
            3. @RavacholTout d'abord, merci à tous pour votre aide.

              Donc pour résumer, je peux faire ça :

              char vers[]="V0190";
              sprintf (to_print, "Ma chaine est %s", vers);

              n'est ce pas ?
            4. @NicoSalut,
              Si tu veux juste afficher la chaine tu peux écrire plus simplement comme cela:
              char vers[]="V0190";
              printf ("Ma chaine est %s", vers);

              Eventuellement ajouter un \n après le %s pour positionner le curseur sur la ligne suivante.

              A++