Le type de sut.field[0]
est en effet char [MAX_CHARS+1]
. Cependant, la plupart des autres réponses ont le type de "Name, "
faux - il est en fait de type char [7]
(utilisez sizeof "Name, "
pour une démonstration facile de cela). Néanmoins, vous ne pouvez toujours pas attribuer directement un char [7]
à char [MAX_CHARS+1]
.Vous ne pouvez même pas attribuer directement un char [7]
à un autre char [7]
(l'initialisation est traité différemment de affectation de cette manière). La réponse est probablement simplement d'utiliser une fonction coyping - par exemple, si vous êtes certain que MAX_CHARS >= 6
, alors vous pouvez simplement utiliser strcpy()
. Si vous ne pouvez pas être sûr de la longueur étant correcte, vous pouvez utiliser strncat()
comme en tronquant copie chaîne:
sut.field[0][0] = '\0';
strncat(sut.field[0], "Name, ", MAX_CHARS);
(Notez que malgré le nom, strncpy()
est pas approprié pour cela, et en fait est très rarement la fonction désirée du tout).
Il convient de souligner, cependant, que vous pouvez affecter indirectement des réseaux (du même type) si elles sont enveloppés dans un struct
. Cela signifie que ce qui suit fonctionnera (si vous avez un compilateur C99):
typedef struct { char s[MAX_CHARS+1] } f_string; /* string for each field */
csv_line sut;
sut.field[0] = (f_string){"Name, "};
Merci pour votre aide. Acceptation pour cette réponse parce que c'était le plus rapide, un peu difficile à choisir entre les autres. – Mike