Problema esercizio(File I/O)

di il
9 risposte

Problema esercizio(File I/O)

Salve sono uno studente di ingegneria informatica sono 3 giorni che provo a risolvere questo esercizio di una vecchia prova di esame ma non riesco a capire come fare.
https://scontent-b-cdg.xx.fbcdn.net/hphotos-frc3/t1.0-9/993386_10201635006666533_1898152252_n.jpg
https://fbcdn-sphotos-e-a.akamaihd.net/hphotos-ak-xpa1/t1.0-9/1186950_10201635008786586_870152535_n.jpg
Ho messo le foto dell esercizio. Spero di non aver violato nessuna delle regole del forum, in caso contrario chiedo venia .
fatemi capire come lo devo risolvere fino adesso sono riuscito solo a stampare i due file.txt

9 Risposte

  • Re: Problema esercizio(File I/O)

    Quale parte di esercizio non riesci a svolgere?
  • Re: Problema esercizio(File I/O)

    In pratica le ultime parti non riesco a capire cosa devo utilizzare per far stampare
    Nome autore:
    -Pubblicazioni dell autore
    -citazioni dell autore
  • Re: Problema esercizio(File I/O)

    le ultime parti non riesco a capire cosa devo utilizzare per far stampare ...
    Credo ti basti una printf()
    Magari ci puoi illustrare come intendi organizzare i dati e poi postare quello (codice o pseudocodice) che hai già fatto.
  • Re: Problema esercizio(File I/O)

    #include <stdio.h> 
    #include <stdlib.h>
    #define PUB "pub.txt"
    int main() /*apro la funzione principale*/
    {
     FILE *fp; /*dichiaro il puntatore che andra' a puntare il mio file */
     char riga[100]; /*dichiaro 2 vettori*/
     char *c; /*dichiaro il puntatore c*/
     int n = 1; /*dichiaro una varibiale che mi servira' per contare le righe*/
     fp = fopen(PUB,"r"); /*apro il file in lettura ("r")*/
     do 
     {
      c = fgets(riga,100,fp); /*prendo ogni riga*/
      if (c) /*se esiste...*/
       printf("%d. %s",n,riga);  /*stampo il numero corrispondete e il contenuto della riga*/
       n++; /*aumento n*/
     } while (c != NULL); /*il ciclo si ripende fino a quando c non e' nullo (nn ci sono + righe)*/
    
    
     fclose(fp); /*chiudo il file*/
     scanf("%d");
     return 0;
    }
    Al momento ho scritto questo che mi fa stampare unico file.
    Io avevo pensato di far acquisire al programma i due FILE e poi fargli stampare la riga opportuna
    per esempio "se l AUTORE1 scrive la prima e la seconda publicazione faccio stampare solo la prima riga e la 3"
  • Re: Problema esercizio(File I/O)

    Io credo (ma questo dipende dal corso che stai seguendo) che tu debba caricare il file in memoria, in una struttura dati apposita ed eseguire le stampe utilizzando la struttura dati, non il file.
  • Re: Problema esercizio(File I/O)

    Ok grazie adesso ci provo
    PS: questa è FONDAMENTI DI INFORMATICA xD
  • Re: Problema esercizio(File I/O)

    rode93 ha scritto:


    PS: questa è FONDAMENTI DI INFORMATICA xD
    Infatti, questi sono nozioni fondamentali ...
  • Re: Problema esercizio(File I/O)

    #include <stdio.h>
    #include <stdlib.h>
    #define MAX 100
    #define MIN 50
    #define PUB "pub.txt"
    int main(){
        FILE*fp;
        char titolo[MAX];
        char autore[MIN];
        char *c;
        int i, j;
       if(!(fp=fopen(PUB, "r"))){
                          printf("impossibile aprire il file %s in lettura", PUB);
                          exit(1);}
                      while(1){
               c=fgets(titolo,MAX,fp);
               if(c!=NULL)
               c++;
               break;
               }
               fscanf(fp,"%d",i);
               for(j=0; j<=i; j++);
               if(j!=i+1)
               fscanf(fp,"%s",autore);
               return 1;       
    }
    
    sto utilizzando questo codice per caricare i file in una variabile specifica xò non riesco a capire come poter caricare su una stessa variabile Nelementi dato che ad ogni fscanf/fgets mi si cancella quello che c'era prima(giustissimo XD)...avevo pensato a una matrice ma non riesco a capire come utilizzarla con fscanf/fgets
  • Re: Problema esercizio(File I/O)

    Fscanf()/fgets() al massimo leggono una riga; per leggere ed immagazzinare in memoria più dati devi avere un array.
    Nel tuo caso devi avere un array di stringhe () e per il suo caricamento da file dovrai utilizzare un indice che parte da 0 e viene incrementato dopo ogni riga letta; ogni riga verrà letta nella posizione i-esima a quel momento.
Devi accedere o registrarti per scrivere nel forum
9 risposte