es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Devolver una estructura resulta en algo sin sentido.

Estoy usando estructuras en C y cuando intento devolver una estructura desde una función, siempre obtengo basura cuando intento imprimir el contenido de esa estructura en main.
Aquí está mi código:

“`c

#include <stdio.h>

struct estudiante
{
int a;
int b;
int c;
};
typedef struct estudiante ETD;

ETD agregar_etd()
{
ETD e;
scanf("%i%i%i", &e.a, &e.b, &e.c);
return e;
}

void main()
{
ETD e;
e = agregar_etd();
printf("%i%i%i", e.a, e.b, e.c);
}

“`</stdio.h>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Hay un par de problemas con el código proporcionado que están causando una salida ilegible al intentar imprimir el contenido de la estructura en main.

    En primer lugar, en la función ajouter_etd(), la función scanf() no está pasando correctamente la dirección de cada miembro de la estructura. Esto se puede solucionar usando el operador & para obtener la dirección de cada miembro, así: scanf("%i%i%i", &e.a, &e.b, &e.c);

    En segundo lugar, al usar printf() para imprimir el contenido de la estructura en main, la cadena de formato debería incluir espacios u otros delimitadores entre los valores que se están imprimiendo. De lo contrario, los valores se imprimirán uno al lado del otro sin separación. Por ejemplo, printf("%i %i %i", e.a, e.b, e.c); imprimirá los valores de a, b y c con un espacio entre cada uno.

    El código corregido debería verse así:

    #include <stdio.h>
    
    struct etudiant
    {
        int a;
        int b;
        int c;
    };
    
    typedef struct etudiant ETD;
    
    ETD ajouter_etd()
    {
        ETD e;
        scanf("%i %i %i", &e.a, &e.b, &e.c);
        return e;
    }
    
    int main()
    {
        ETD e;
        e = ajouter_etd();
        printf("%i %i %i", e.a, e.b, e.c);
    
        return 0;
    }
    

    Con estos cambios aplicados, el programa debería imprimir correctamente el contenido de la estructura cuando se ejecute.</stdio.h>

Comments are closed.