Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [c] return problem

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110

    [c] return problem

    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.

  2. #2
    Dovrebbe essere dichiarata come char * ReadFile, ma se vuoi restituire una stringa in quel modo (ma te lo sconsiglio) devi dichiarare s come static.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: [c] return problem

    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).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.