C/Visual C - Paso de parametros a una funcion.

 
Vista:

Paso de parametros a una funcion.

Publicado por Mikel (2 intervenciones) el 22/07/2004 11:21:16
Hola, debo de haber olvidado todo lo que sabia de C por culpa de Java :( y ahora tengo una duda. A ver si me podeis ayudar.
Tengo el siguiente codigo:

int main(int argc, char *argv[]) {
int dfFichero,
readbytes=0;
char buffFichero[TAMANYO];
char fichero[TAMANYO];
char path[]="/home/xxxx/miFichero";

unsigned char *ficheroNC;
char *ficheroCod;

dfFichero=open(path,O_RDWR);
if (dfFichero==-1)
printf("errorOpen");

// lo siguiente lee un fichero.
while ((readbytes=read(dfFichero,buffFichero,TAMANYO)) != 0)
strcpy(fichero,buffFichero);
close(dfFichero);

// Esto creo que esta muy mal :)
strcpy(ficheroNC,fichero);

// Pregunta: ¿ Como le paso "fichero" a la siguiente funcion, ?
// Aqui esta la definicion de la funcion.
//int Funcion(unsigned char *source, size_t sourcelen, char *target, size_t targetlen)

int r=Funcion(ficheroNC,sizeof(ficheroNC),ficheroCod,sizeof(ficheroCod));

}
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

RE:Paso de parametros a una funcion.

Publicado por Nicolas (183 intervenciones) el 22/07/2004 14:23:05
Hola!!!!!!!!
strcpy(ficheroNC, fichero); // copia el contenido de fichero en ficheroNC y esta bien porque los dos son cadenas de caracteres.

Y con respecto a tu funcion cuando pasas las dos cadenas a la funcion le estas pasando dos punteros asi q no hay problema con como lo haces. Pero tene en cuenta q sizeof(ficheroNC) seguramente (dependera de la plataforma en la q corra (cosa q ambos sabemos en JAVA no ocurre)) ocupara 4 bytes y no es la longitud de la cadena. La longitud de la cadena es strlen(ficheroNC).
Lo otro q deberas hacer es alocar memoria para fichero y ficheroNC y luego liberarla.
Si queres hacerlo en C: fichero = (unsigned char*)malloc(TAMANIO_TUYO);
y luego free(fichero);
En C++: fichero = new char[TAMANIO_TUYO];
y luego delete fichero

Salu2!!!!!
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