Vous essayez de attribuer un tableau. Les tableaux ne sont pas assignables. Cela échouera pour la même raison
char a[20];
a = "Hello"; /* Error */
Pour copier des données dans un tableau, vous devez utiliser une fonction de bibliothèque, comme strcpy
strcpy(a, "Hello");
Pendant ce temps, il est possible de copier des données dans un tableau en utilisant les fonctionnalités du langage de base (au lieu de fonctions de la bibliothèque) au point de initialisation, comme dans
char a[20] = "Hello";
dans votre cas, vous pouvez utiliser la syntaxe d'initialisation globale pour obtenir le même
s_t my_s_t = { "John", "Smith", 2 };
Tant que vous faites cela au point d'initialisation, il fonctionnera. Si vous devez le faire plus tard, alors strcpy
est votre ami.
Si oui, pourquoi char s [20] = "bonjour"; fonctionne-t-il? – Lior
@Lior Parce que c'est une initialisation, pas une affectation. Il existe des règles spéciales qui font que les initialisations fonctionnent pour les tableaux. –
@Lior vous ne pouvez le faire lors de l'initialisation de la chaîne. Il va initialiser la chaîne littérale sur la pile. –