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.

¿Cómo utilizar las estructuras en C? Me resulta difícil entenderlo, estoy obteniendo muchos errores al implementarlo.

Estoy intentando implementar una estructura en C. Estoy obteniendo estos errores.

Por favor, ayúdeme con este error y explíqueme también qué estoy haciendo mal.

main.c:7:12: error: variable 's1' has initializer but incomplete type
    7 |     struct student s1 = {"Nick",16,50,72.5};
      |            ^~~~~~~
main.c:7:26: warning: excess elements in struct initializer
    7 |     struct student s1 = {"Nick",16,50,72.5};
      |                          ^~~~~~
main.c:7:26: note: (near initialization for 's1')
main.c:7:33: warning: excess elements in struct initializer
    7 |     struct student s1 = {"Nick",16,50,72.5};
      |                                 ^~
main.c:7:33: note: (near initialization for 's1')
main.c:7:36: warning: excess elements in struct initializer
    7 |     struct student s1 = {"Nick",16,50,72.5};
      |                                    ^~
main.c:7:36: note: (near initialization for 's1')
main.c:7:39: warning: excess elements in struct initializer
    7 |     struct student s1 = {"Nick",16,50,72.5};
      |                                       ^~~~
main.c:7:39: note: (near initialization for 's1')
main.c:7:20: error: storage size of 's1' isn't known
    7 |     struct student s1 = {"Nick",16,50,72.5};

Mi código

““
#include<stdio.h>
#include<stdlib.h>

struct student{
char name[4];
int age;
int roll_no;
float marks;
}s1;

int main()
{
struct student s1 = {“Nick”,16,50,72.5};

printf("%s",s1.name);

// return 0;

}
“`</stdlib.h></stdio.h>

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Explicación

    El error está ocurriendo porque la estructura no está completamente definida antes de ser utilizada en la función principal. En C, cuando se define una estructura, debe ser declarada antes de ser utilizada.

    En el código dado, la definición de la estructura student se coloca después de la función principal. Para solucionar este error, mueve la definición de la estructura student antes de la función principal o declara la estructura antes de la función principal.

    Además, hay una advertencia que indica algunos elementos excesivos en el inicializador de la estructura. Esto se debe a que el campo name en la estructura student se declara como char name[4], lo que significa que solo puede almacenar una cadena con una longitud máxima de 3 caracteres (más el carácter nulo de terminación). Sin embargo, el inicializador {"Nick", 16, 50, 72.5} trata de almacenar una cadena de 4 letras “Nick” que contiene 5 caracteres (incluyendo el carácter nulo). Puedes solucionar este problema aumentando el tamaño del campo name en la estructura student.

    Otro error indica que el tamaño de almacenamiento de la variable s1 no se conoce. Esto se debe a que estás tratando de declarar y definir la variable s1 fuera de la definición de la estructura. Puedes solucionar este error eliminando la declaración de la variable s1 fuera de la definición de la estructura y simplemente declarándola dentro de la función principal.

    Código actualizado

    “`c
    #include <stdio.h>
    #include <stdlib.h>

    struct student{
    char name[10];
    int age;
    int roll_no;
    float marks;
    };

    int main()
    {
    struct student s1 = {“Nick”, 16, 50, 72.5};

    printf("%s", s1.name);
    
    return 0;
    

    }
    “`</stdlib.h></stdio.h>

Comments are closed.