Problemas con las estructuras anidadas y la asignación de memoria dinámica

WetWizard

Estoy usando estructuras anidadas y asignación de memoria dinámica y tengo problemas.

Estoy usando la siguiente entrada:

ID de miembro: 1
Nombre de miembro: A
Número de póliza: 1

ID de póliza: P1
Tipo de póliza: 1
Prima de póliza: 100

Sin embargo, no puedo ingresar nada más después de ingresar a P1. El programa termina.

El otro problema que tengo es que cuando selecciono la opción 2, que se supone que imprime todos los miembros, no se muestra correctamente.

Incluso antes de ingresar los detalles del miembro, si elijo la opción 2, muestra lo siguiente:

ID de miembro: 0
Nombre de miembro:

Me pregunto si al crear la matriz dinámica, cometí un error y en realidad está imprimiendo el miembro [0]. Después de agregar miembros a la matriz, luego de elegir la opción 2, imprime:

ID de miembro: 1
Nombre de miembro: A
ID de póliza: (nulo)
Tipo de póliza: Premium: $ 100

Imprime los detalles del miembro, pero cuando se trata de acceder a la política de ese miembro, esos detalles no se imprimen y omite por completo el tipo de política.

Joshua
typedef struct member {
    int id;
    char name[30];
    int polnum;

    struct policy {
        char id[4];
        enum enumtype type;
        int premium;
    }pol;
}mem;

Puede tener nmiembros y cada miembro puede tener polnumpolíticas, pero eso no es lo que dice esta estructura. Esta estructura dice que cada miembro tiene una política que está representada por una estructura anidada. Sus reallocmiembros externos de mantenimiento en una matriz restringen el espacio de la solución. En realidad, no podemos hacer eso y usar una estructura elástica al mismo tiempo, así que no tengo que entrar en cómo. Hacemos esto de la manera que ya sabes.

typedef struct struct policy {
        char id[4];
        enum enumtype type;
        int premium;
} pol;

typedef struct member {
    int id;
    char name[30];
    int polnum;
    pol *policies;
}mem;

Agregar políticas es así:

    if (member.polnum > 0) { 
        member.pol = malloc(member.polnum * sizeof(pol));
        printf("\nEnter policy details for %s", member.name);
        for (i = 0; i < member.polnum; i++) {
             //...
             scanf("%d", &member.pol[i].type);
             //...
         }
     } else {
         member.pol = NULL; // When you go to write the free memory code you will thank me
     }

En el miembro de impresión, tenemos una construcción muy similar:

        for (j = 0; j < member[i].polnum; j++) {
            printf("\nPolicy ID: %s", member[i].pol[j].type);

Nota administrativa: el código se eliminó de la pregunta tras la publicación de la respuesta.

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

¿Estructuras y asignación de memoria dinámica en C?

Asignación de memoria de estructuras anidadas

Duda de conceptos relacionados con la asignación de memoria dinámica y punteros

Problemas con la memoria dinámica (_CrtIsValidHeapPointer)

Asignar dinámicamente estructuras C y acceder a miembros según la memoria de estructuras

Asignar dinámicamente estructuras C y acceder a miembros según la memoria de estructuras

Pila, montón y asignación de memoria dinámica

Asignación y eliminación dinámica de memoria

Ayúdame a transponer la matriz en C (con asignación de memoria dinámica)

puntero y asignación de memoria dinámica

puntero y asignación de memoria dinámica

Punteros vacíos y asignación de memoria dinámica

¿Asignación de memoria dinámica y punteros?

El tamaño de la memoria crece exorbitantemente con la asignación dinámica de memoria 2D

Asignación de memoria dinámica para una matriz de estructuras

¿Problemas con las estructuras en Swift y hacer un UIImage a partir de la URL?

¿Cómo funciona la asignación de memoria dinámica?

¿Cuál es la diferencia entre la matriz de longitud variable y la asignación de memoria dinámica?

¿Cuál es la diferencia entre la matriz de longitud variable y la asignación de memoria dinámica?

Problema con la asignación de memoria dinámica en una función auxiliar, en un archivo de encabezado

Problema con la asignación de memoria dinámica en una función auxiliar, en un archivo de encabezado

Problema con la asignación de memoria dinámica en una función auxiliar, en un archivo de encabezado

¿Existen problemas potenciales con la asignación de estructuras entre sí?

La asignación y eliminación de memoria dinámica básica desencadena una afirmación fallida

La asignación y eliminación de memoria dinámica básica desencadena una afirmación fallida

¿Puede tener una matriz dinámica dentro de la lista vinculada y su asignación de memoria?

¿Es esta una buena o una mala práctica con la asignación de memoria dinámica?

problemas de asignación de memoria con la aplicación Android

Asignación de memoria dinámica php

TOP Lista

CalienteEtiquetas

Archivo