Sujet : ça marche paaaaas ( prog C )
Salut alors j'ai une erreur bizarre sur un petit truc tout con.
Je me suis dit que peut être il y a des gens qui s'y connaissent un peu ici. L'idée de ce truc (en fait je m'entraine pour un partiel ) c'est de faire un tableau dynamique d'étudiants, de le remplir en tapant au clavier et qu'il nous l'imprime ensuite.
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i ;
int a ;
char nom[20];
typedef struct { int age ;
char nom[20];
} etudiant;
//tableau dynamique d'étudiants
printf("tableau de combien ?\n");
int nombre=0;
scanf("%d", &nombre);
etudiant * tab;
tab =(etudiant*)malloc(nombre*sizeof(etudiant));
//remplissage du tableau
for(i=0;i<nombre;i++)
{ printf("numero %d: \n\n", i);
printf("age ?\n");
scanf("%d", &a);
tab[i].age=a;
printf("nom ?\n");
scanf("%s", nom);
tab[i].nom=nom; //erreur : "incompatible types in assignment" : WTF ?
}
//impression tu tableau
for (i=0;i<nombre;i++)
printf("etudiant #%d : age : %d\n, nom : %s",
i, tab[i].age, tab[i].nom);
}
Donc étrangement il bloque à "tab[i].nom=nom" pourtant nom c'est une chaine de carateres, je l'ai bien défini avant, je le scan correctement (sans & car c'est une chaine de carac). Il y a quelque chose qui m'échappe.
Merci pour ton aide précieuse.
edit :
Bon en fait ça marche avec
printf("nom ?\n");
scanf("%s", tab[i].nom);
à la place de
printf("nom ?\n");
scanf("%s", nom);
tab[i].nom=nom;
pourtant ça revient exactement à la même chose, ETRANGE.