Puntatore a file

di il
9 risposte

Puntatore a file

Ciao a tutti,
avrei una domanda: quando io apro un file con fopen, come faccio a stampare a cosa punta il puntatore dopo l'apertura?
Mi è successo più volte che, nonostante io avessi fatto il controllo per verificare che non puntasse a NULL, il puntatore non puntasse al file che mi serviva aprire (probabilmente faccio qualche errore, ma non capisco dove).
Sarebbe perciò possibile stampare a cosa punta il puntatore?

Volevo poi chiedervi: c'è qualcosa di sbagliato in questo codice? (Credo che il puntatore non punti al file. Tra l'altro i watches danno una stringa alfanumerica non meglio identificata)

int main(int argc, char *argv[])
{
     FILE *fin;

    if(argc != 4)
    {
        printf("Wrong number of parameters.\n");
        exit(1);
    }

    fin = fopen(argv[1], "r");
    if(fin == NULL)
    {
        printf("Unable to read file %s", argv[1]);
        exit(1);
    }
}

9 Risposte

  • Re: Puntatore a file

    Nel codice che hai postato non c'è nulla di sbagliato, l'unico cosa che puoi fare è controllare che in argv[1] ci sia il path del file che vuoi aprire.

    Puoi provare a stampare con la printf e %p o %x l'indirizzo del puntatore a file.
  • Re: Puntatore a file

    Con questo codice, l'output è

    C:\User\.... // (ecc)
    file1.txt
    ... // (argv[2])
    ... // (argv[3]
    0028FE4
    0000000
    75F42960
    
    int main(int argc, char *argv[])
    {
         rectang *recPt;
         int n;
         char namer[6];
         FILE *fin, *farea, *fper;
    
        if(argc != 4)
        {
            printf("Wrong number of parameters.\n");
            exit(1);
        }
    
        for(i=0; i<4; i++)
            printf("%s\n", argv[i]);
    
        fin = fopen(argv[1], "r");
    
    
        if(fin == NULL)
        {
            printf("Unable to read file %s", argv[1]);
            exit(1);
        }
        printf("%p\n", &fin);
        printf("%p\n", *fin);
        printf("%p\n", fin);
    }
    PS: Mi spiegheresti cosa stampo le 3 volte che uso la printf nell'ultima parte del codice?
    Sempre grazie
  • Re: Puntatore a file

    Ps: Ovviamente nella stessa directory in cui ho il file main.c ho anche un file file1.txt
  • Re: Puntatore a file

    Fin è un puntatore alla struttura FILE. Dai un'occhiata alla struttura FILE e comprendi a cosa punta il tuo puntatore.

    Non capisco ancora lo scopo della domanda ...
  • Re: Puntatore a file

    Scusami, io non capisco la tua risposta (:
    La mia domanda è: come faccio a capire a cosa punta il puntatore al file dopo che ho tentato di aprire il file?
    C'è un modo per fare stampare l'oggetto a cui punta il puntatore (nel mio caso il file file.txt)?
    Scusami, non ho mai studiato i puntatori in dettaglio finora (lo farò quando andrò ad approfondire quella parte) ma ho già a che fare con i file.
  • Re: Puntatore a file

    Ma "a cosa punta in che senso"? Cosa vuoi sapere esattamente dal puntatore?
  • Re: Puntatore a file

    Io ho un file nella cartella in cui c'è anche il file main.c.
    Scrivo qualcosa del tipo fin = fopen("file.txt", "r")
    Poi mi chiedo: la fopen ha veramente aperto il file file.txt che ho nella cartella rendendolo accessibile al mio programma?
  • Re: Puntatore a file

    Se il puntatore restituito è zero c'è stato un problema, altrimenti il file è stato aperto.

    Ma questo c'è nella documentazione della fopen ... è questo quello che ti serve?
  • Re: Puntatore a file




Devi accedere o registrarti per scrivere nel forum
9 risposte