Hola Este es parte de mi codigo y de verdad no se como arreglar el problema
typedef struct{
int x,y;
char name[10];
}Opcion;
void opciones()
{
int i;
Opcion opc[3];
opc[0].name="JUGAR";
opc[1].name="RECORDS\0";
opc[2].name="AYUDA\0";
opc[3].name="SALIR\0";
for(i=1;i<=4;i++)
{
opc[i-1].x=10;
opc[i-1].y=i*100;
rectangle(opc[i-1].x,opc[i-1].y,opc[i-1].x+30,textwidth(opc[i-1].name));
}
}
Y obtenego estos errores:
error: incompatible types in assignment of 'const char [6]' to 'char [10]'
Tienes varios errores de sintaxis y de conceptos. Primero esto:
opc[0].name="JUGAR";
No es valido, no puedes asignar una cadena a un array de chars de esa forma (Solo se puede hacer en la misma linea de declaración del mismo), seria asi
char name[10] = "JUGAR";
Si lo deseas en forma de asignación pues debes asignar cada caracter por separado en la posición que deseas, o usar una de las funciones de copiado de cadenas de la familia strcpy, etc, por ejemplo:
strcpy_s(opc[0].name, "JUGAR");
Finalmente tiene un error de concepto cuando creas el array de estructuras "Opcion". Si dices que creas un array de 3 estructuras:
Opcion opc[3];
Luego no puedes salir haciendo esto :silbar::
opc[3].name="SALIR\0";
Los arrays siempre son zero indexed, si necesitas mas info puedes darle una lectura a esto
http://programmers.stackexchange.com/questions/110804/why-are-zero-based-arrays-the-norm
Saludos
Otra opcion es cambiar.
char name[10];
por
char *name;
asi no usariamos 2 veces memoria para la misma cadena. El apuntado simplemente tendria la direccion de la cadena estatica.
Ahora que si esa estructura se va a guardar en archivo entonces no seria util. Y tendrias que usar las recomendaciones de Tunder.