Ayuda con un programa en C

Iniciado por ivangc44, 31 Diciembre 2011, 13:56 PM

0 Miembros y 2 Visitantes están viendo este tema.

ivangc44

Repasando mi codigo, resulta q SI tenia los corchetes [] puestos, para definir arrays de punteros, y aun asi, no me va. Y n entiendo porq. Alguien tiene algo parecido, q pueda ayudarme??? (bueno si me lo pasa, mejor, asi puedo contrastar, porq cojones no me funciona).

rir3760

A riesgo de repetir las soluciones que ya te han dado ...

El problema en la función "recoger_libro" no es la declaración del parámetro "libro" sino su uso.

Cuando una función se declara de esta forma:
void recoger_libro(T_libreria libro[]) ...
Se procesa como si el parámetro fuera declarado así:
void recoger_libro(T_libreria *libro) ...
Y para acceder al objeto apuntado por "libro" debes utilizar el operador "[]" (como ya te indicaron) o bien el operador "->".

Por ello hay que cambiar esa funcion a:
int recoger_libro(T_libreria libro[])
{
   int n, i;
   
   printf("Libros a introducir? ");
   scanf("%d", &n);
   
   for (i = 0; i < n; i++){
      printf("Titulo del libro: ");
      gets(libro[i].titulo);
     
      printf("Autor del libro: ");
      gets(libro[i].autor);
     
      printf("A%co de publicaci%cn: ", 164, 162);
      scanf("%d", &libro[i].fecha_publicacion.anno);
     
      printf("Mes de publicaci%cn: ", 162);
      scanf("%d", &libro[i].fecha_publicacion.mes);
     
      printf("Datos guardados.");
      system("cls");
   }
   
   return i;
}


También hay que evitar el uso de la función "gets" utilizando en su lugar "fgets". Mas información sobre el tema en |Lo que no hay que hacer en C/C++. Nivel basico|.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

ivangc44

Ya veo, rir3760, ahora entiendo cosas. Gracias por la ayuda,
Bueno otra cosita, q es eso de fgets, y como se usa, porq no me a quedado muy claro en el "manual" que has incluido, si alguien me lo puede explicar, como si fuese tonto (cosa q en programacion asi soy yo, un inepto total), se lo agradeceria de todo corazon, bueno eso y todo lo demas.

ivangc44

Otra cosa, q no entiendo. Cuando llamo a las funciones, me van bien, pero no sale de ellas, como hago q acaben las funciones y me vuelva a salir el menu???