PROBLEMA ALL'APERTURA DI SOLA LETTURA DI UN FILE DI TESTO

di il
4 risposte

PROBLEMA ALL'APERTURA DI SOLA LETTURA DI UN FILE DI TESTO

Salve a tutti, mi chiamo Marco e sono alle prime armi con il linguaggio C.

Quest'oggi mi sono imbattuto in un esercizio che mi chiedeva di dover trascrivere in un vettore dinamico di numeri reali il contenuto di un file che contiene, a sua volta, numeri reali.

Sono quasi certo che il programma sia scritto correttamente, anche perché ho a disposizione la soluzione (ammesso e non concesso che il prof abbia fatto un errore)...ho, inoltre, creato il file "prova.txt" contenente una lista di numeri reali.

Il problema che riscontro è al momento dell'avvio del programma:
mi chiede di inserire il nome del file da aprire in sola lettura, lo inserisco e mi si presenta l'errore che mi avverte che non è possibile aprire il file in sola lettura.

Cosa mi sto perdendo?

PS giusto per completezza vi dico che, avendo un mac,uso Xcode per programmare.
Grazie in anticipo, spero di essere stato chiaro.

4 Risposte

  • Re: PROBLEMA ALL'APERTURA DI SOLA LETTURA DI UN FILE DI TESTO

    Controlla di avere i permessi di lettura sul quel file.

    Se non funziona ancora, allora posta il codice con i tag code e vediamo se c'è qualche errore.
  • Re: PROBLEMA ALL'APERTURA DI SOLA LETTURA DI UN FILE DI TESTO

    Grazie mille per la celere risposta.
    Ho controllato e i permessi ce li ho sia in lettura che in scrittura, quindi non credo sia quello il problema.
    Posto qui di seguito il codice:

    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>
    #include <string.h>

    int main ()
    {
    char nomeFile[15];
    double dato, *arrayDouble;
    FILE *fin;
    int lung=0, i;//la variabile lung è un contatore che contera quanti dati sono stati letti dal file per poter poi allocare dinamicamente la memoria del vettore

    printf("inserire il nome del file:\n");
    scanf("%s", nomeFile);

    if((fin=fopen(nomeFile, "r"))==NULL)
    printf("il file non può essere aperto in lettura\n");
    else
    {
    while(!feof(fin))//finche non è stato raggiunto l'indicatore di fine file...
    {
    fscanf(fin, "%lf", &dato);
    lung++;
    }
    }

    arrayDouble=malloc(lung*sizeof(double));

    if(arrayDouble==NULL)
    printf("problemi in allocazione\n");
    else
    {
    rewind(fin);//fa tornare il cursore nel file all'inizio in modo da essere sicuri che la lettura avvenga dall'inizio dello stesso..

    for(i=0;i<lung;i++)
    fscanf(fin,"%lf", &arrayDouble);

    fclose(fin);//chiusura file..
    }

    printf("il file e l'array contengono i seguenti %d elementi:\n", lung);

    if(arrayDouble)
    for(i=0;i<lung;i++)
    printf("%g\n", arrayDouble);//con la notazione %g Viene usata la forma più breve fra quella ottenuta con %f e quella ottenuta con %e

    return 0;
    }
  • Re: PROBLEMA ALL'APERTURA DI SOLA LETTURA DI UN FILE DI TESTO

    Prova a digitare come nome del file il path completo.
  • Re: PROBLEMA ALL'APERTURA DI SOLA LETTURA DI UN FILE DI TESTO

    Yeeeehhhhh! Funziona!!
    Grazie milleeeeeee, mi stavo arrovellando il cervello.
Devi accedere o registrarti per scrivere nel forum
4 risposte