Erreur compil

Signaler
Messages postés
16
Date d'inscription
mardi 5 août 2003
Statut
Membre
Dernière intervention
26 août 2003
-
Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008
-
j'utilise un char[8] : crit_r->birthDate et je lui passe 8 caractères(rien de plus normal jusque là) comme suit:

crit_r->birthDate ="1245221"

Le problème c'est que j'obtient l'erreur suivante:

error C2106: '=' : left operand must be l-value

12 réponses

Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008

ta essayé strcpy()?
a+
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,
Pour copier une chaine dans une autre, c'est strcpy(..), surtout pas de '='.
Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008

A 20 seconde près aardman à eu la même idée, mais moi 20 secondes avant lui Na! Na! (je plaisante bien sur...)
a+
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
oui, mais mon post comporte 5 fois plus de mot et est plus précis car je dis qu'on ne peut pas utiliser '=' pour les chaines de caracteres.
Bien essayé :p
Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008

Ouais, ouais! Je te l'accorde, on va dire que les 20 secondes t'on servi à taper ton post. Le mien était LIGTH!
a+
Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008

Juste pour une petite précision, le "=" est possible pour les chaine de caractères en allocation statique : char toto[]="cool"

a+
Messages postés
3
Date d'inscription
jeudi 14 août 2003
Statut
Membre
Dernière intervention
30 août 2003

-------------------------------
Réponse au message :
-------------------------------

> j'utilise un char[8] : crit_r->birthDate et je lui passe 8 caractères(rien de plus normal jusque là) comme suit:
>
> crit_r->birthDate ="1245221"
>
> Le problème c'est que j'obtient l'erreur suivante:
>
> error C2106: '=' : left operand must be l-value
>
>
>
Il te suffit de déclarer ta variable comme un simple pointeur de char. ensuite tu peux lui affecter ta chaîne de char

exemple :

char * toto ;

toto = "123456" ; // sans limite de taille !

lorsque tu donnes dans ton programme une constante chaîne de caractères telle que "123456", la chaîne est rentrée en mémoire et "123456" est l'adresse mémoire où C l'a stockée.
Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008

Faire ce que tu dis sans malloc() (ou au moins une allocation statique)!!?? Tu déclare un pointeur mais ta chaine ou tu la met si tu ne lui alloue pas de la mémoire?
a+
Messages postés
3
Date d'inscription
jeudi 14 août 2003
Statut
Membre
Dernière intervention
30 août 2003

où crois-tu que le système range les chaînes constantes ? en mémoire. le pointeur récupéré est l'adresse où le système a rangé la chaîne constante.
@+
Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008

a+
Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008

En d'autre termes, tu es en train de me dire que le malloc ne sert à rien? char *toto puis toto="chaine de caractère" c'est suffisant. Tu me parle aussi de constantes, tu peux préciser ta penser (par un exemple)
a+
Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008

Pour moi jusqu'a présent, le seul moment ou le malloc() est inutile est pour une allocation statique du style char*toto="chaine". Sinon char*toto puis toto=malloc(sizeof(char)*7) et enfin strcpy(toto,"chaine"). Amoins que l'on m'explique se qui ne vas pas, pour moi c'est les seul manière de procéder.
lorsque tu me dis
char *toto;
toto="chaine";
Ca décoiffe.
a+