Débutant en C

Résolu
Nico -  
Ravachol Messages postés 568 Statut Membre -
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

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

    char vers{VO191};
    0
  3. philtrain
     
    Bonsoir,

    Moi, j'écrirais l'instruction suivante :

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

    a+
    0
  4. Raph
     
    Je pense que la meilleure maniere d'initialiser au début mais sinon tu peux toujours le remplir case par case : vers[0]='V';
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. etienne
     
    -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)
    0
    1. etienne aussi, mais un autre ;-)
       
      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 ...
      0
      1. Ravachol Messages postés 568 Statut Membre 120 > 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++
        0
      2. Ravachol Messages postés 568 Statut Membre 120 > Ravachol Messages postés 568 Statut Membre
         
        Pouet,
        caractère \0 compris donc.
        0
      3. Nico > Ravachol Messages postés 568 Statut Membre
         
        Tout 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 ?
        0
      4. Ravachol Messages postés 568 Statut Membre 120 > Nico
         
        Salut,
        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++
        0