Como otras respuestas ya han señalado, solo puede inicializar una matriz de caracteres con una cadena literal, no puede asignar una cadena literal a una matriz de caracteres. Sin embargo, las estructuras (incluso aquellas que contienen matrices de caracteres) son otra olla de pescado.
yo no recomendaría hacer esto en un programa real, pero esto demuestra que aunque los tipos de matrices no se pueden asignar a, estructuras que contienen los tipos de matriz pueden ser.
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
}
Así, en su original ejemplo, el siguiente código debe compilarse bien:
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"};
}
posible duplicado de [Asignación de cadenas a arreglos de caracteres] (http://stackoverflow.com/questions/579734/assigning-strings-to-arrays-of-characters) –
no es un duplicado, porque esta es una estructura que contiene una matriz de caracteres, que es sutilmente diferente a simplemente un array de caracteres regulares, he explicado en mi respuesta. – dreamlax