Débutant en C

Résolu/Fermé
Nico - 28 janv. 2005 à 18:46
Ravachol Messages postés 566 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 30 octobre 2005 - 31 janv. 2005 à 18:06
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

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

char vers{VO191};
0
Utilisateur anonyme
28 janv. 2005 à 22:43
Bonsoir,

Moi, j'écrirais l'instruction suivante :


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


a+
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
-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
etienne aussi, mais un autre ;-)
29 janv. 2005 à 23:40
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
Ravachol Messages postés 566 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 30 octobre 2005 120 > etienne aussi, mais un autre ;-)
30 janv. 2005 à 09:01
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
Ravachol Messages postés 566 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 30 octobre 2005 120 > Ravachol Messages postés 566 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 30 octobre 2005
30 janv. 2005 à 09:08
Pouet,
caractère \0 compris donc.
0
Nico > Ravachol Messages postés 566 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 30 octobre 2005
31 janv. 2005 à 16:37
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
Ravachol Messages postés 566 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 30 octobre 2005 120 > Nico
31 janv. 2005 à 18:06
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