C/Visual C - valor de retorno de funcion

   
Vista:

valor de retorno de funcion

Publicado por Vero (10 intervenciones) el 08/11/2010 13:10:32
Hola,

estoy haciendo una función que lea una frase de un fichero y la devuelva al programa.
He creado un hilo de ejecución (que es llamado desde el main()) y quiero llamar a la función desde aqui.

La función es la siguiente:

char *leerfichero(){
char frase[1000],letra;
FILE *f;
int pos=1,cont=0;


//randomize();
f=fopen("C:/Documents and Settings/frases.txt","r+b");
fseek(f,0,SEEK_SET);//comienzo a leer desde el principio de uno en uno
letra=getc(f);
frase[cont]=letra;
cont++;
while(letra != 13){
fseek(f,pos,SEEK_SET);
letra=getc(f);
pos++;
frase[cont]=letra;
cont++;
}

fclose(f);
return frase;
}


en el hilo tengo esta llamada:

char *fraseLeer=NULL;
fraseLeer=leerfichero();
printf("frase leer %s",fraseLeer);fflush(stdout);

El problema es
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:valor de retorno de funcion

Publicado por Vero (10 intervenciones) el 08/11/2010 13:11:38
El problema es que

printf("frase leer %s",fraseLeer);fflush(stdout);

no imprime nada en pantalla.

¿sabéis que estoy haciendo mal?

gracias,
saludos.
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

RE:valor de retorno de funcion

Publicado por Tom (481 intervenciones) el 09/11/2010 17:23:29
Creo que no debes retornar frase tal y como está declarada, ya que es un puntero que puede quedar invalidado al salir de la función leerFichero();

Hay muchas alternativas, una de ellas sería:

char *leerFichero() {
//char frase[1000], letra;
char letra, *frase;

frase = malloc(1000);
...
return frase;
}

la llamada:

fraseLeer=leerfichero();
printf("frase leer %s",fraseLeer);
free(fraseLeer);
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

RE:valor de retorno de funcion

Publicado por Vero (10 intervenciones) el 10/11/2010 09:22:14
Gracias,

así lo haré. También creo que es más correcto.
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