C e la gestione dei file

di il
13 risposte

C e la gestione dei file

Domanda banale per chi è in grado di programmare, quindi non io!
premetto che lavoro su Xcode e programmo (ci provo) in C
Ma il file prova.txt presente nel codice, dove me lo crea?
Ho provato a dargli un percorso ma non so bene come funzionano i percorsi su mac, in win e dos me la cavavo meglio...
#include <stdio.h>
void printIndicatorPosition(FILE *f);
void printIndicatorPosition(FILE *f){
    printf("L' indicatore si trova in posizione: %ld\n",ftell(f));
}

int main (void)
{
    FILE *f;
    f = fopen ("prova.txt", "w+");          
    if ( ! f ) {                                      
        printf("Impossibile aprire il file\n");     
        return 1;                                      
    }
    printf("Apertura ok\n");       
    printIndicatorPosition(f);                  
    fseek(f,5,SEEK_SET);                        
    printIndicatorPosition(f);                 
    rewind(f);                                  
    printIndicatorPosition(f);            
}
questo codice l'ho creato per ricapitolare quello che posso fare con il cursore (spostamenti vari...)

13 Risposte

  • Re: C e la gestione dei file

    Non uso il Mac ma credo che così te lo piazza nella cartella dove stai lavorando in quel momento (di solito dove risiede l'eseguibile).
  • Re: C e la gestione dei file

    Eh... ho cercato ma mica l'ho trovato nella cartella del progetto...
    boh... non riesco a capire... quando sono più fresco ci riprovo...
  • Re: C e la gestione dei file

    Pure io non conosco il Mac, ma dato che non trovi il file provo a darti uno spunto. In Windows e Unix esiste il concetto di 'Current Directory' che è quella in cui il processo lavora (e quindi dove scrive il file) e può essere diversa da dove si trova l' eseguibile. La current directory può essere cambiata da programma, e può dipendere da come hai lanciato il programma, ad esempio con un link o altro.
  • Re: C e la gestione dei file

    Mmm faccio una ricerca...
    la cosa che non mi convince è che mantenendo aperta la finestra di ricerca nel finder del mac (che per chi non conosce mac non conosce la rapidità di ricerca e aggiornamento della stessa) non trova nulla. Cioè, faccio la ricerca prova.txt e la mantengo aperta, avvio il programma in xcode e torno alla finestra di ricerca, ma nulla... boh...
    e cmq anche inserendo un percorso, un po' come avrei fatto in dos, mi restituisce errore... come se il percorso nel mac va scritto diversamente da come si fa su dos (sono abbastanza cosciente che sia così, ma non conosco la giusta via...)
    cmq se ci riesco vi aggiorno...
  • Re: C e la gestione dei file

    Vedo che non chiami la fclose, è una buona idea farlo sempre.
  • Re: C e la gestione dei file

    Hai ragione barba, è che sono approdato ieri a questo capitolo di programmazione e come al solito, ad ogni capitolo, cerco di capire a piccoli passi!!
    grazie cmq sempre per l'aiuto!!
  • Re: C e la gestione dei file

    Ci sono riuscito!
    dopo alcuni tentativi e prove il mistero sta nell'inglese.
    Come per win, le cartelle continuano a chiamarsi in inglese anche se
    le vedo rinominate in italiano, quindi se scrivevo utenti, libreria, scrivania ecc ecc non funzionava
    mentre il percorso corretto è quello seguente, che nel caso specifico prevede la creazione di una cartella "file" all'interno della cartella Xcode

    /Users/toti/Library/Developer/Xcode/file

    spero serva a chi come me lavora con xcode su mac…
    buona giornata!
  • Re: C e la gestione dei file

    Ancora una domanda:
    if ( ! f ) {                                      
            printf("Impossibile aprire il file\n");     
            return 1;                                      
        }
    questo controllo ha una forma che non conosco, cioè, se fread non riesce ad aprire il file riporta NULL, quindi f dovrebbe essere uguale a NULL per stampare "impossibile aprire il file.
    ma non capisco !f, è una forma contratta? come funzionerebbe??
    grazie gente!
  • Re: C e la gestione dei file

    NULL è una macro che corrisponde a 0 e le condizioni booleane considerano lo zero come false.
    Puoi scrivere anche int a = 0; if(a)...
  • Re: C e la gestione dei file

    Ma quindi, trasformandola in linguaggio umano:

    if(!f) vorrebbe dire se f è diverso da 0 ??
    quindi potrebbe corrispondere a f != 0 oppure f != NULL ??
  • Re: C e la gestione dei file

    Si, le condizioni vengono valutate false se sono zero e vere se sono diverse da zero. Volendo potresti scrivere if (a+b) ...
  • Re: C e la gestione dei file

    If(a+b) se a+b hanno un valore diverso da zero, allora entrambe sono vere...
    se la somma invece è 0 vuol dire che entrambe sono false.

    questo vuol dire come condizioni non possono avere valori negativi, giusto?
  • Re: C e la gestione dei file

    toti81 ha scritto:


    if(a+b) se a+b hanno un valore diverso da zero, allora entrambe sono vere...
    se la somma invece è 0 vuol dire che entrambe sono false.

    questo vuol dire come condizioni non possono avere valori negativi, giusto?
    No! non mi sono spiegato. Nell' if puoi scrivere una espressione numerica, una espressione numerica viene considerata false o vera se vale 0 oppure no. Quando ho scritto a + b intendevo una espressione numerica (a e b sono due interi), avrei potuto scrivere if (a * 2 - b *4 / 3)

    EDIT: se l' espressione vale un numero negativo, dato che non è zero viene considerata vera.
Devi accedere o registrarti per scrivere nel forum
13 risposte