que tengo mal con los punteros en c? necesito ayuda!

Iniciado por mariaorlando0922, 11 Febrero 2013, 14:17 PM

0 Miembros y 1 Visitante están viendo este tema.

mariaorlando0922

me saltan esto tipos de errores.
[Warning] passing arg 2 of `consulta' from incompatible pointer type
[Warning] passing arg 3 of `consulta' from incompatible pointer type

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

#define MAX 4

struct pel
{
       char codigo [7];
       char titulo [15];
       char autor [25];
       char genero[15];
       int existencia;
       float precio;
};
//llamado a funciones
void carga_datos(struct pel *p, int *contp);
char *consulta(struct pel *p, int *contp, char *pel_bus, char *aut_bus);
void actializar(struct pel *p, int contp, char *cod_act);

main()
{
      struct pel peliculas[MAX];
      char opc,pel_bus[15],aut_bus[25], *cartel,cod_act[7];
      int contp=0, cond=0;
     
     
      do{
          printf("\t Menu de opcines\n");
          printf("1- Cargar datos\n2-Consultas\n3-Actualizar\n4-facturacion\n5-salir\n");
          opc=getch();
          switch(opc)
          {
                     case'1': carga_datos(peliculas, &contp);
                              break;
                     case'2': printf("Ingrese pelicula a buscar\n");
                              scanf("%s", pel_bus);
                              printf("Ingrese Nombre de Autor\n");
                              scanf("%s", aut_bus);
                              cartel= consulta(peliculas, pel_bus,aut_bus, contp);
                              printf("%s\n", cartel);
                              getch();
                              break;
                     case'3': printf("INGRESE CODIGO A ACTUALIZAR\n");
                              scanf("%s", &cod_act);
                              actializar(peliculas, cod_act,contp);
                              getch();
                              break;
                     case'4': cond=1;
                              break;
                     case '5': cond=1;
                     break;
                     default: printf("tecla incorrecta\n");
                     break;
          }
      }while (cond!=1 && opc!=5);
      system ("PAUSE");
      return ;
}

                     
                     
                             
         
     
void carga_datos(struct pel *p, int *contp)
{
     int i=*contp;
     char opc1='s';
     
     while (i<MAX && opc1=='s')
     {
           printf("ingrese codigo\n");fflush(stdin);
           gets(p.codigo);
           printf("Titulo de pelicula:\n"); fflush(stdin);
           gets(p.titulo);
           printf("Autor:\n"); fflush(stdin);
           gets(p.autor);
           printf("genero:\n"); fflush(stdin);
           gets(p.genero);
           printf("Existencia:\n"); fflush(stdin);
           scanf("%d", &p.existencia);
           printf("Precio:\n"); fflush(stdin);
           scanf("%d",&p.precio);
           (*contp)++;
           printf("Desea cargar otro dato (S O N)\n\n");
           opc1=getch();
     }
     if(i==MAX)
     {
               printf("NO HAY MAS MEMORIA DISPONIBLE\n");
     }
     return;
}

mariaorlando0922


rir3760

Para empezar debes evitar el uso de las funciones de la biblioteca conio de Borland, la función gets y la función fflush en la forma "fflush(stdin)". Mas información en la pagina |Lo que no hay que hacer en C/C++. Nivel basico|.

El error se indica claramente en el mensaje del compilador: los argumentos en la llamada a la función "consulta" no coinciden con su prototipo:
char *consulta(struct pel *p, int *contp, char *pel_bus, char *aut_bus);

/* ... */

struct pel peliculas[MAX];
char opc,pel_bus[15],aut_bus[25], *cartel,cod_act[7];
int contp=0, cond=0;

/* ... */

cartel = consulta(peliculas, pel_bus,aut_bus, contp);

* El segundo argumento "pel_bus" es de tipo "char [15]",  este resulta en un "char *" el cual es pasado a la función pero esta espera un "int *".

* El cuarto argumento "contp" es de tipo "int" cuando ella espera un "char *"

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

mariaorlando0922

gracias gracias gracias!!!!!!!!!!!!!!! tenias razzon ahi lo corregi....
que genio!!!!!

durasno

Citarche nadie sabe c que me pueda ayudar
evita estos comentarios porque puede haber gente q diga: "nadie sabe LEER los errores y warnings que marca el compilador!!!!!!!"


Saludos
Ahorrate una pregunta, lee el man