PDA

Visualizza la versione completa : [c] return problem


earp_
05-06-2007, 19:04
Salve,
dato


int ReadFile(void)
{
int t;
char s[80];
// dichiaro il ptr a file e apro il file
// declare ptr to file and open the file
FILE *fd;
if((fd=fopen(TESTFILE,"rt"))==NULL)
{
fprintf(stdout,"Error read inf input file\r\n");
fflush(stdout);
return -1;
}

fscanf(fd, "%s %d", s, &t);
fprintf(stdout, "%s %d\n", s, t);

return s;
}


se faccio return s, la funzione non può essere dichiarata come void "int ReadFile(void)" , ma come cosa?
s è una stringa contenente "abcdefg"
poi tale stringa la passo ad un altra funzione.

MItaly
05-06-2007, 19:17
Dovrebbe essere dichiarata come char * ReadFile, ma se vuoi restituire una stringa in quel modo (ma te lo sconsiglio) devi dichiarare s come static.

andbin
05-06-2007, 19:20
Originariamente inviato da earp_
int ReadFile(void)
{
int t;
char s[80];

.....

return s;
}Dovresti dichiarare il valore di ritorno come char* (e quindi puoi fare return s). Ma così come è non andrebbe bene lo stesso, perché quando la funzione termina, l'array di 80 char "sparisce", essendo locale.

Quindi il buffer o lo allochi dinamicamente, o lo dichiari come hai fatto nella funzione ma marcandolo 'static' o lo ricevi come parametro in ingresso (sarà cura del chiamante allocare il buffer).

Loading