Débutant en panne

JeanLucZ Messages postés 5 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 6 octobre 2003 - 5 oct. 2003 à 22:07
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 6 oct. 2003 à 11:29
JLZ

Je suis débutant en programmation. Quelqu'un peut-il me dire pourquoi la dernière ligne ne marche pas.
J'ai une erreur : error C2106: '=' : left operand must be l-value.

Merci d'avance.

JLZ

struct produit {
char nom[20];
float prix;
int qte;
};

void main()
{
struct produit tabProd[30];
int i=0, j;
char art[20];

gets(art);

printf("art = %s\n", art);
tabProd[i].nom = art;
}

4 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 oct. 2003 à 22:10
strcpy(tabProd.nom, art);
BruNews, ciao...
0
cbestern Messages postés 25 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 17 novembre 2003
6 oct. 2003 à 07:15
Pour être plus précis, lorsque tu fais tabProd[i].nom = art; il essaye de copier les pointeurs et non les contenus.
if faut donc bien faire des strcpy pour que cela fonctione.
0
JeanLucZ Messages postés 5 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 6 octobre 2003
6 oct. 2003 à 11:18
Merci bcp à tous les deux.
Je ne comprenais pas pourquoi ça marchait avec
tabProd[i].prix = 2.5; et pas avec tabProd[i].nom = art;
En fait, si j'ai bien compris, art est un pointeur sur le premier octet de art[20]. Donc dans ma manière de formuler, je passais une adresse et non une chaine de caractères.

Est-ce bien cela ou ai-je encore tout faux ?

Merci d'avance.

PS : j'avoue que j'ai du mal avec ces pointeurs, surtout quand ils sont assocés à des structures.
Où pourrais-je trouver plein d'exercices corrigés pour m'entrainer. Les bouquins comme ceux de Delannoy sont un peu légers la-dessus.

JLZ
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
6 oct. 2003 à 11:29
Exact, le nom d'un char[] represente bien un char* sur le 1er octet du tableau. Si est dans une struct idem.
BruNews, ciao...
0
Rejoignez-nous