¿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>
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 estructurastudent
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 estructurastudent
se declara comochar 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 camponame
en la estructurastudent
.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 variables1
fuera de la definición de la estructura. Puedes solucionar este error eliminando la declaración de la variables1
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};
}
“`</stdlib.h></stdio.h>