Error:Estructura con strings

Iniciado por SkaTrumpet, 12 Mayo 2016, 02:07 AM

0 Miembros y 1 Visitante están viendo este tema.

SkaTrumpet

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]'

ThunderCls

Tienes varios errores de sintaxis y de conceptos. Primero esto:

Código (cpp) [Seleccionar]
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

Código (cpp) [Seleccionar]
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:

Código (cpp) [Seleccionar]
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:

Código (cpp) [Seleccionar]
Opcion opc[3];

Luego no puedes salir haciendo esto  :silbar::

Código (cpp) [Seleccionar]
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
-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/

AlbertoBSD

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.

Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW