Autor
|
Tema: [C] - Duda estructuras (Leído 7,285 veces)
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
¿Cuál es el método utilizado en C para el ingreso de una estructura de datos? Me refiero a que si se deben leer las variables de la estructura por apartey luego asignarlas a los miembros de la esctructura... o bien, si se deben asignar directamente a cada miembro de la esctructura luego de un scanf().
|
|
|
En línea
|
|
|
|
nicolasblues86
Desconectado
Mensajes: 38
|
no entiendo bien la pregunta pero bueno te pongo un ejemplo de uso de estrocturas en c que tenía por ahí tirado #include <stdio.h> struct Ficha { char Nombre[80]; int Num_unidades; int Precio_unidad; int Estado; // 0 = moroso; 1 = atrasado; 2 = pagado }; typedef struct Ficha Fichas; int main(int argc, char** argv) { Fichas Cliente[100]; int i; char nombre[80]; for (i = 0; i < 99; i++) { if (nombre == Cliente[i].Nombre) { printf ("%s", Cliente [i ]. Nombre); printf ("%i", Cliente [i ]. Num_unidades); printf ("%i", Cliente [i ]. Precio_unidad); switch (Cliente[i].Estado) { break; break; break; }; } } return 0; }
Saludos!!
|
|
« Última modificación: 20 Mayo 2010, 23:39 pm por nicolasblues86 »
|
En línea
|
Solamente hay 10 clases de personas en el mundo los que saben leer binario y los que no
|
|
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
Me refiero a las asignaciones: //Suponemos la esctructura struct Ficha { char Nombre[80]; int Num_unidades; int Precio_unidad; int Estado; // 0 = moroso; 1 = atrasado; 2 = pagado }; ... //Es esta la forma de asignacion? int num, int pre; Ficha F; F.Num_Unidades = num; F.Precio_Unidad = pre; ... /* O lo correcto seria que en el scanf haga una asignación directa?*/
|
|
|
En línea
|
|
|
|
nicolasblues86
Desconectado
Mensajes: 38
|
seee.. lo podes hacer tanto así como directamente en el scanf
o si nosotros pasamos por referencia el struct se haria void ejemplo ( struct nom_del_struct *p )
osea se utilaza "->" en vez de de "." saludos!!
|
|
|
En línea
|
Solamente hay 10 clases de personas en el mundo los que saben leer binario y los que no
|
|
|
.:BlackCoder:.
Desconectado
Mensajes: 388
Cada dia C++!!
|
Weno como no son clases... ni POO lo puedes hacer directamente... pero en la POO no es recomendable... Tu sabes para que no aya acceso directo con los miembros privados...
Saludos...
EDITO: aya xD!! va con 'h'... sorry
|
|
« Última modificación: 20 Mayo 2010, 23:59 pm por El_nuevo_HH »
|
En línea
|
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja
|
|
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
Exacto a eso último me refería. OFFTOPIC : Para que no hallan creo que es lo correcto
|
|
|
En línea
|
|
|
|
@synthesize
Wiki
Desconectado
Mensajes: 640
Another Brick in the Wall
|
Para acceder o asignar a una variable normal dentro de una estructura: estructura.elemento;
Para acceder o asignar a un puntero, dentro de una estructura: estructura->puntero;
También te recomiendo declarar las estructuras como typedef: typedef struct Nodo { elementos... };
|
|
|
En línea
|
|
|
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
Gracias por la aclaración, pero no me refería a eso.
|
|
|
En línea
|
|
|
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
Miren el siguiente code: #include <stdlib.h> #include <string.h> #define MAX_LIMIT 50 struct Persona{ char *nom, *dom, *tel; int edad; }; typedef struct Persona stPersona; void _ingreso(stPersona *); void _imprimir(stPersona *); int main() { stPersona *User; //Aqui creo que deberia reservar el espacio para User _ingreso(User); _imprimir(User); return 0; } void _ingreso(stPersona *stP) { char *nom; nom = (char *)(malloc((MAX_LIMIT )*sizeof(char))); stP = (stPersona *)(malloc(sizeof(stPersona ))); stP ->nom = (char *)(malloc((MAX_LIMIT )*sizeof(char))); fgets(nom ,MAX_LIMIT ,stdin ); } void _imprimir(stPersona *stP) { puts("------SALIDA------"); }
¿Por qué se produce un error de segmentación en la salida? EDITADO : Si reservo espacio para User, y luego utilizo printf("%s") la salida es (null).
|
|
« Última modificación: 21 Mayo 2010, 17:09 pm por dr.~ »
|
En línea
|
|
|
|
Littlehorse
All the world's a stage
Moderador
Desconectado
Mensajes: 2.714
Nie Dam Sie
|
Es que reservas memoria utilizando el puntero stP pero dicho puntero deja de existir cuando termina el contexto de la función. User no apunta al contenido adecuado cuando se lo pasas a _imprimir y ademas cuando sales de _ingresar pierdes la referencia para liberar la memoria que reservaste.
Saludos.
PD: Necesitas incluir stdio.h para stdin.
|
|
|
En línea
|
An expert is a man who has made all the mistakes which can be made, in a very narrow field.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda programa con estructuras de control
« 1 2 »
Programación C/C++
|
jamatbar
|
14
|
7,471
|
11 Noviembre 2011, 12:05 pm
por jamatbar
|
|
|
duda sobre estructuras y funciones
Programación C/C++
|
asdavid
|
3
|
2,844
|
29 Noviembre 2012, 00:01 am
por durasno
|
|
|
[Duda] Estructuras
« 1 2 »
ASM
|
xv0
|
15
|
9,273
|
12 Febrero 2013, 10:18 am
por fary
|
|
|
Duda con estructuras
Dudas Generales
|
fins94
|
1
|
2,192
|
4 Junio 2013, 18:55 pm
por ivancea96
|
|
|
Duda lista con estructuras c++
Programación C/C++
|
d00ze13
|
3
|
2,249
|
19 Diciembre 2013, 15:34 pm
por rir3760
|
|