Duda en compilación

Iniciado por GhostLT, 1 Mayo 2010, 19:43 PM

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

GhostLT

Me atore y no se x que y creo que todo esta bien declarado y el archivo.txt se encuentra dentro de la carpeta donde guarde mi proyecto

Errores:
26 `FuncionVulnerable' undeclared (first use this function)
39 invalid conversion from `char' to `const char*'
39 initializing argument 1 of `FILE* fopen(const char*, const char*)'
56`int FuncionVulnerable(char*)' used prior to declaration


Código (cpp) [Seleccionar]
#include <cstdlib>
#include <iostream>

using namespace std;

/* declaramos la funcion que usaremos para leer el fichero*/

int LeerFichero(char*, char*, int);


int main()

{

/* esta es la funcion principal en la que declaramos una variable de tipo char que
contendra el string recogido desde "archivo.txt"*/
       
        char buffer[1000];
        char nombre[]="archivo.txt";

/* tras declarar las variables llamamos a la funcion leer fichero() que metera en la
variable buffer el contenido del archivo.txt, luego llamaremos a la funcion vulnerable
para que copie el contenido de este a una variable de buffer de menor tamaño que esta */

        LeerFichero(buffer,nombre,1000);
        FuncionVulnerable(buffer);
        system("pause");
        return 0;
}

/* la funcion leer fichero, abre el fichero, lo lee y lo guarda en la variable buffer */

int LeerFichero(char*Fbuffer, char Fnombre, int Limite)
{
        int c;
        int n=0;

        FILE *f;
        f=fopen(Fnombre,"r");
        while ((c=getc(f))!=EOF)
        {
                if(n<Limite)
                {Fbuffer[n++]=c;}
        }
        Fbuffer[n++]=0;
        fclose(f);
        return 0;
}

/* funcion vulnerable. Esta funcion es lo importante de este codigo, en esta función
recibimos el puntero donde se encuentra la variable que contiene el texto introducido
en archivo.txt. La funcion copiara el contenido de esta variable a una variable de tipo char
de un tamaño inferior a la variable buffer. seguidamente mostrara el contenido de esta.*/

int FuncionVulnerable(char *cptr)
{
        char buff[300]= "Datos";
        strcpy(buff,cptr);
        printf("%s\n\n",buff);
        return 0;
}


/* Funcion Oculta. Ninguna de las otras funciones anteriares llama a esta */

int FuncionOculta()
{
        printf("Este texto nunca deberia de mostrarse");
        return 0;
}
/code]

There is some fiction in you truth, and some truth in you fiction

Komodo

Simple, creo que en CodeBlocks son más explícitos con el error.

lo primero es que se te ha pasado declarar la funcion FuncionVulnerable y eso ya te generará error.

Y el segundo problema te lo deja claro, fopen tiene está sintaxis: FILE* fopen(const char*, const char*)

Y tu has declarado Fnombre como un simple char y no un const char*

Así que ya sabes char* Fnombre y declara la función


GhostLT

Gracias Komodo!!!
Puse hasta arriba la declaración
Código (cpp) [Seleccionar]
int FuncionVulnerable(char *cptr);/code]

y modifique

[code=cpp] int LeerFichero(char*Fbuffer,char*Fnombre, int Limite)
  ;-)[/code]
There is some fiction in you truth, and some truth in you fiction

Komodo