C/Visual C - Arreglo de estructuras en funciones

 
Vista:

Arreglo de estructuras en funciones

Publicado por Juan (2 intervenciones) el 31/08/2011 20:12:35
Hola, en el siguiente codigo cuando leo los campos de la estructura en la funcion carga me agarra cualquier cosa, donde esta el error? Gracias



#include<stdio.h>
#include<conio.h>
#include<string.h>

typedef struct {
int cod, cant;
char autor[20], tit[20];} libros;

void carga (libros []);


main ()
{

libros exis [10];
int opc;
carga (exis);
/*do {
printf ("1-PRESTAMO DE LIBROS\n2-DEVOLUCION DE LIBROS\n3-FIN");
do {
scanf (" %d", &opc);
} while ((opc<1) && (opc>3));
switch (opc)
{
case 1: presupuesto (); break;
case 2: devolucion (); break;
};while ( opc != 3);*/
getch ();
return 0;
}

void carga (libros exis[10])
{
int i=0;
char cont;
do
{

printf("Ingrese codigo\n");
scanf(" %d",exis[i].cod);
printf("Ingrese titulo\n");
scanf(" %s",exis[i].tit);
printf("Ingrese cantidad de ejemplares\n");
scanf(" %d",exis[i].cant);
printf("Ingrese autor\n");
scanf(" %s",exis[i].autor);
i++;
printf("Desea continuar?\n");
scanf(" %c",&cont);
printf("%c %d %s %d %s",cont, exis[i].cod,exis[i].tit,exis[i].cant,exis[i].autor);
}
while(cont!='n');
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Arreglo de estructuras en funciones

Publicado por yonatan (23 intervenciones) el 01/09/2011 09:17:22
#include <stdio.h>
#include <conio.h>
#include <string.h>


void carga ( struct ejemplo* libros); // declaracion : tienes que decirle al compilador que tu funcion resive un tipo de datos "struct"

struct libros { // tu forma de declarar la estructura poniendo el nombre de la misma al final no creo que funcione.

int cod, cant;
char autor[20];
char tit[20];

};

main ()

{

struct libros exis;

carga (&exis);

do

{
printf("1-PRESTAMO DE LIBRO\n2-DEVOLUCION DE LIBROS\n-FIN");

do

{

scanf("%d%,&opc);

}while ((opc<1) && (opc>3)); // talvez uno de tus errores puede estar aca tambien...

switch (opc)

{

case1: presupuesto();break;
case2: devolution();break;
};while (opc != 3); // si este while cierra el primer "do" , no creo que funcione de esa manera

getch();
return 0;
}

recuerda que si la funcion que vas a crear , va a trabajar con una estructura, la misma tiene que estar
declarada antes de la funcion main() , osea como global, para que asi sea visible para tu funcion.

cuando yo declare, void carga ( struct ejemplo* libros);, este pasaje de parametros es por referencia.
dependiendo si quieres trabajar con la variable original o hacer copias , tienes la opcion
de pasar valores por referencia o por valor. ten en cuenta que la funcion maneja diferente estos dos tipos
de pasages...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar