Comme d'autres réponses l'ont déjà fait remarquer, vous ne pouvez initialiser qu'un tableau de caractères avec une chaîne littérale, vous ne pouvez pas affecter une chaîne littérale à un tableau de caractères. Cependant, les structs (même ceux qui contiennent des tableaux de caractères) sont une autre marmite de poisson.
Je ne recommanderais pas de le faire dans un programme réel, mais cela démontre que bien que les types de tableaux ne puissent pas être assignés, les structures contenant des types de tableaux peuvent l'être.
typedef struct
{
char value[100];
} string;
int main()
{
string a = {"hello"};
a = (string){"another string!"}; // overwrite value with a new string
puts(a.value);
string b = {"a NEW string"};
b = a; // override with the value of another "string" struct
puts(b.value); // prints "another string!" again
}
Ainsi, dans votre exemple original, le code suivant doit compiler correctement:
typedef struct{
char a[6];
} point;
int main()
{
point p;
// note that only 5 characters + 1 for '\0' will fit in a char[6] array.
p = (point){"onetw"};
}
double possible de [Affectation des chaînes à des tableaux de caractères] (http://stackoverflow.com/questions/579734/assigning-strings-to-arrays-of-characters) –
Pas tout à fait un doublon, parce que c'est une structure contenant un tableau de caractères, qui est subtilement différent d'un simple tableau de caractères, je l'ai expliqué dans ma réponse. – dreamlax