[C con Clase] Pregunta sobre Estructuras Anidadas

Davidson, Steven srd4121 en njit.edu
Lun Ene 28 02:46:42 CET 2013


Hola Edwin,

2013/1/27 Edwin Alexander Bohorquez Gamba <edwinprogramacion en hotmail.es>

>  Hola, tengo una pregunta: Como puedo acceder a los campos de una
> estructura anidada, para realizar una asignacion?.
> En el siguiente codigo asigne una cadena a cada uno de estos campos, para
> despues imprimirlos, pero el compilador me dice que tengo errores.
>
>
Veamos el código fuente.

#include<iostream.h>
>

Si el compilador que usas es reciente, deberías usar el nombre estándar de
<iostream>.

using namespace std;
>
> struct stPersona {
>    struct stNombre {
>       char Nombre[32];
>       char Apellidos[64];
>    } NombreCompleto;
>    char Telefono[10];
> };
>
> int main()
> {
> stPersona ::stNombre NombreAuxiliar;//declaro un objeto de tipo stNombre
> NombreAuxiliar.Nombre="Edwin";
> NombreAuxiliar.Apellidos="Bohorquez";
>

Aquí tienes los dos errores. Estás intentando asignar una dirección de
memoria a un array, que ya es una dirección constante de memoria Sospecho
que esto no es lo que quieres hacer.

Lo que seguramente te interese es copiar los caracteres de una cadena a los
del array en el campo de la estructura. Para esto, sugiero que uses
'strncpy()'. Por ejemplo,

strncpy( NombreAuxiliar.Nombre, "Edwin", 32 );
strncpy( NombreAuxiliar.Apellidos, "Bohorquez", 64 );

Para este caso particular, podrías optar por inicializar la estructura;
esto es,

stPersona :: stNombre NombreAuxiliar = { "Edwin", "Bohorquez" };


Espero haber aclarado la duda.

 Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130127/cc35f62b/attachment.html>


Más información sobre la lista de distribución Cconclase