Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110

    [C] - dove colloco la funzione?

    SO che avete pensato a quella parte dove batte raramente il sole....
    la domanda è semplice:

    dato

    int main (void)
    {
    LeggiDaFile();
    return 0
    }

    int LeggiDaFile(void)
    {
    // fa qualcosa
    }
    supponiamo che da LeggiDaFile file ho dei valori come
    A
    B
    C
    che vado ad utilizzare singolarmente tramite una funzione.
    Ora mi chiedevo se la funzione è meglio metterla all'interno di LeggiDaFile(), creando così però maggior confusione se il codice diventa lungo o è meglio passarla al main.
    In questo modo mi chiedevo come.

    PS = il file è fatto proprio come riportato nell'ultimo quote

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: [C] - dove colloco la funzione?

    Ho riletto piu' di una volta il tuo post, ma non l'ho capito ...

    Specialmente ... cosa vuoi dire con

    " ... se la funzione è meglio metterla all'interno di LeggiDaFile() ..."

    Non puoi inserire una funzione all'interno di un'altra ...

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110
    perdincirindella sto continuando a far confusione
    Riprovo

    Dato la seguente sittuazione

    int main (void)
    {
    LeggiDaFile();
    return 0
    }

    int LeggiDaFile(void)
    {
    // fa qualcosa
    }

    Dalla funzione leggi file ho il seguente risultato
    A
    B
    C
    Ora supponiamo che debba fare qualcosa singolarmente per A, per B e per C e questo qualcosa lo faccio tramite una funzione faQualcosa(int A)
    mi chiedevo se la funzione era meglio richiamarla all'interno della funzione LeggiDaFile o nel main.
    Il fatto è che se la richiamo da LeggiDaFile() posso fare una cosa come
    LeggiDaFile(){
    miaVariabile = faQualcosa(a)
    //con mia variabile faccio altri calcoli
    altriCalcoli(miaVariabile )
    }
    per poi fare altri calcoli con miaVariabile.
    C'è da aggiungere che miaVariabile contiene dati parziali che vado poi ad unificare in altriCalcoli(miaVariabile )
    così però vado a creare confusione se il codice poi diventa + corposo.
    Mi chiedevo come posso passare il tutto al main.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da earp_
    perdincirindella sto continuando a far confusione
    Vedo....

    Originariamente inviato da earp_
    Dato la seguente sittuazione

    int main (void)
    {
    LeggiDaFile();
    return 0
    }

    int LeggiDaFile(void)
    {
    // fa qualcosa
    }

    Dalla funzione leggi file ho il seguente risultato


    Ora supponiamo che debba fare qualcosa singolarmente per A, per B e per C e questo qualcosa lo faccio tramite una funzione faQualcosa(int A)
    mi chiedevo se la funzione era meglio richiamarla all'interno della funzione LeggiDaFile o nel main.
    Dipende da quali/quanti dati devono essere gestiti e da come intendi passarli tra le funzioni. Senza sapere questo, qualunque ragionamento è inutile.

    Cioè è inutile che mi fai l'esempio A B C. Che sono? stringhe? caratteri? quanti ne devi gestire? come vuoi memorizzarli? Che cosa devi farci?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110
    Cioè è inutile che mi fai l'esempio A B C. Che sono? stringhe? caratteri? quanti ne devi gestire? come vuoi memorizzarli? Che cosa devi farci?
    in effetti non hai tutti i torti

    Ora supponiamo che debba fare qualcosa singolarmente per A, per B e per C e questo qualcosa lo faccio tramite una funzione faQualcosa(int A)
    mi chiedevo se la funzione era meglio richiamarla all'interno della funzione LeggiDaFile o nel main.
    A faQualcosa passo
    alla prima lettura ho
    char *text = "stringa 1";
    alla seconda lettura ho
    char *text = "stringa 2";
    alla terza ho
    char *text = "stringa 3";

    faQualcosa(text).

    Il punto è che la funzione faQualcosa è assai complessa (parte l'abbiamo vista in un altro thread) e non volevo richiamarla all'interno della funzione LeggiDaFile(), ma nel main.

    La funzione LeggiDaFile è la seguente

    int readFromFile(void){

    FILE *myEnter;
    char *myString[numRows];
    int i;

    printf("...Reading from file %s\n", kFileToRead);
    printf("\n");
    myEnter = fopen(kFileToRead,"r");

    if(myEnter==NULL)
    return kErrorIO;

    for(i=0;i<numRows;i++){

    myString[i] = calloc(kMaxStringLength, sizeof(char));

    if(myString[i]==NULL)
    return kErrorMemory;


    //visualizzo la stringa a video

    fscanf(myEnter,"%s",myString[i]);
    printf("\n");
    printf("For the string number %d = %s\n",i+1, myString[i]);


    }

    printf("\n");

    fclose(myEnter);

    for(i=0;i<numRows;i++){
    free(myString[i]);
    }

    return kErrorNo;

    }
    dove KErrorNo =0;

    cosa devo fare affinchè nel main abbia un valore di ritorno pari ad ogni singola riga che leggo da file?
    il file contiene
    stringa 1
    stringa 2
    stringa 3

  6. #6
    io ti suggerisco di lavorare a questo modo: leggiDaFile ti può servire anche ad altri scopi se la lasci più generalizzata e non usi al suo interno faQualcosa? bene, allora lasciale separate. se nel main sporca troppo puoi sempre creare una terza funzione che usi insieme leggiDaFile e faQualcosa. Se leggiDaFile senza faQualcosa non serve proprio a niente, allora puoi lasciarle anche assieme. In ogni caso puoi pensare di lasciarle separate per aumentare la leggibilità.
    GreyFox (Linux registered user #435102)
    greyfox.imente.org - GreyFox's shots (photo gallery)
    $ cd /pub
    $ more beer

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110
    Però nel caso usassi una terza funzione, per la prima funzione leggiDaFile() il valore di ritorno non sarà più 0 ma la stringa che devo passare a faQualcosa, confermi?

  8. #8
    certamente, se leggidafile non esegue faqualcosa al suo interno allora la sua unica occupazione sarà quella di leggere il file e di restituirne in qualche modo il contenuto. tieni presente che se processi file grossi conviene lasciare che sia leggidafile a richiamare faqualcosa man mano che processa, al fine di mantenere bassa la memoria allocata.
    GreyFox (Linux registered user #435102)
    greyfox.imente.org - GreyFox's shots (photo gallery)
    $ cd /pub
    $ more beer

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110
    ok tks

  10. #10
    di niente
    GreyFox (Linux registered user #435102)
    greyfox.imente.org - GreyFox's shots (photo gallery)
    $ cd /pub
    $ more beer

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 © 2025 vBulletin Solutions, Inc. All rights reserved.