Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [C] Gestione file

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    156

    [C] Gestione file

    Salve,
    sto cercando di capire come funziona la gestione dei file. Nel seguito cerco di prendere una serie di numeri da un file (che si trova nella cartella dell'eseguibile) e stamparli semplicemente a video.
    Se inserisco il nome del file correttamente, il tutto funziona bene. Se però inserisco un nome errato il programma si chiude con il solito errore di windows ( mentre dovrebbe stampare a video un avviso di errore e poi uscire)
    Ecco il codice:
    codice:
    #include<stdio.h>
    #include<stdlib.h>
    int lettura( int vettn[]);
    main()
    {
          int vettn[20],i;
          int vettb[20][11];
          int dim;
          dim=lettura(vettn);
          if(dim==-1)
          {
                     printf("Errore nell'apertura del file\n");
                     exit(1);
          }
          else
          {
          for(i=0;i<dim;i=i+1)
          {
                              printf("%d\n", vettn[i]);
          }
          }
          system("pause");
    
    }
    int lettura( int vettn[])
    {
        int dim,i;
        FILE* f;
        char nome[10];
        printf("Inserire il nome del file\n");
        scanf("%s", nome);
        f=fopen(nome, "r");
        if(f==NULL)
        {
                  dim=-1;
        }
        else          
        {
            i=0;
            while(feof(f)==0)
            {
                            fscanf(f,"%d", &vettn[i]);
                            i=i+1;
            }
            dim=i;
        }
        fclose(f);
        return dim;
    }

  2. #2
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Nella scanf manca la & commerciale..

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    156
    Ma non ci vuole perchè è una stringa! Gli passo già l'indirizzo....o sbaglio?

  4. #4
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Originariamente inviato da slashino
    Ma non ci vuole perchè è una stringa! Gli passo già l'indirizzo....o sbaglio?
    Credo che ci voglia lo stesso, io ho provato ad inserirla e mi da il messaggio che ho inserito un nome errato..

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    156
    Ma è assurda come cosa! Li non ci vuole la &...E' impossibile che ti funziona se ci metti la &..sei sicuro?

  6. #6
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Originariamente inviato da slashino
    Ma è assurda come cosa! Li non ci vuole la &...E' impossibile che ti funziona se ci metti la &..sei sicuro?
    Scusa ma perchè non ci provi anche tu? Almeno vedi se funziona. A me va..

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    156
    Cioè anche se digiti il nome del file in modo errato ti compare l'avviso di errore? Comunque ho provato e non va...sicuro che non hai modificato altro?
    ps: se hai fatto il programma me lo potresti mandare?

  8. #8
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Originariamente inviato da slashino
    Cioè anche se digiti il nome del file in modo errato ti compare l'avviso di errore? Comunque ho provato e non va...sicuro che non hai modificato altro?
    ps: se hai fatto il programma me lo potresti mandare?
    Ho preso il tuo codice ed ho inserito la & nella scanf, quella all'interno della funzione lettura. Dato che non so qual'è il nome giusto del file da inserire, ne ho inserito uno qualunque e il risultato è stato il messaggio "errore nell'apertura del file". Comunque prova a mandarmi la traccia via mp e vedo se l'ho fatto.

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    156
    Ok ora te la mando

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    156
    Per la cronaca, ho risolto il problema. L'errore sta nel fatto che se c'è un errore nell'apertura del flusso io inserisco semplicemente -1 in dim per poi ritornarlo alla fine. Prima del return però, c'è fclose(f). Ovvero sto cercando di chiudere un flusso che non è stato aperto e quindi il programma si blocca. Per risolvere basta mettere return -1 direttamente qualora f==NULL.

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.