Visualizzazione dei risultati da 1 a 10 su 11

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    113
    io devo creare un file e scriverci dei dati in una struct. poi devo aprire il file in lettura ed ordinarli secondo un campo chiave e successivamente fare una ricerca secondo un campo che mi permetta di visualizzare l'intero recordo della struct del campo cercato..provo ad utlizzare un file ad accesso sequenziale.il problema è che se creo il file in scrittura all'inizio dell'esecuzione del programma..non vado ogni volta a cancellare quelli già inseriti?

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    113
    Quote Originariamente inviata da sizeof Visualizza il messaggio
    io devo creare un file e scriverci dei dati in una struct. poi devo aprire il file in lettura ed ordinarli secondo un campo chiave e successivamente fare una ricerca secondo un campo che mi permetta di visualizzare l'intero recordo della struct del campo cercato..provo ad utlizzare un file ad accesso sequenziale.il problema è che se creo il file in scrittura all'inizio dell'esecuzione del programma..non vado ogni volta a cancellare quelli già inseriti?

    Mi spiego meglio: devo gestire i dati relativi ad una sala ricevimenti per i matrimoni.
    le informazioni sono su un file "eventi.dat" (che non ho e quindi devo creare con i dati).
    il file contiene strutture (variabile matrimonio) con COGNOME SPOSO, COGNOME SPOSA, DATA, NUMERO INVITATI.
    ora devo:
    1) ordinare in senso decrescente tutti i dati in base al numero degli invitati.
    2) devo poter ricavare il cognome degli sposi in base alla data di matrimonio (ricerca dicotomica).
    Entrame queste operazioni devono essere fatte in memoria centrale e poi tutto deve essere rimesso sullo stesso file

    Mi conviene utilizzare un file ad accesso sequenziale o casuale???
    Ultima modifica di sizeof; 07-10-2013 a 16:57

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    113
    Ecco ho utilizzato un file ad accesso sequenziale..ma scrivo e poi leggo ma non mi visualizza sull'output video.
    cosa sbaglio ?

    codice:
    #include <stdio.h>
    #include <string.h>
    #define n 10
    
    struct matrimonio {
            char Cognome_Sposo[15];
            char Cognome_Sposa[15];
            int Data;
            int Invitati;
    }matri[n];
    
    int main()
    {
        char sposo[15];
        char sposa[15];
        int data;
        int invitati;
        int i = 0;
    
        FILE *cfPtr;   /* puntatore al file eventi.dat */
    
        /* fopen apre il file in lettura/scrittura; se non riesce ad aprirlo provoca l'uscita dal programma */
    
        if (( cfPtr = fopen("eventi.dat", "w")) == NULL ) {
                printf("Il file non può essere aperto.\n");
        } else {
            printf("Inserisci il cognome dello sposo, il cognome della sposa, la data e il numero di invitati : \n");
            printf("Inserisci EOF per terminare l'inserimento \n");
            scanf("%s%s%d%d\n", sposo, sposa, &data, &invitati );
    
    
            /* scrive i dati nel file con fprintf */
    
            while (!feof(stdin)) {      /* stdin punta al file e la funzione feof controlla l'impostazione di EOF */
                fprintf(cfPtr, "%s %s %d %d\n", sposo, sposa, data, invitati);
                scanf("%s%s%d%d\n", sposo, sposa, &data, &invitati);
            } /* end while */
    
            fclose(cfPtr);
    
        } /* end else */
    
        /* fopen apre il file in lettura; se non riesce ad aprire il file provoca l'uscita dal programma */
    
        if (( cfPtr = fopen("eventi.dat", "r")) == NULL ) {
            printf("Il file non può essere aperto \n");
        } else {
            printf("%15s%15s%6s%18s", "COGNOME SPOSO", "COGNOME SPOSA", "DATA", "NUMERO INVITATI\n");
            fscanf(cfPtr, "%s%s%d%d", sposo, sposa, &data, &invitati);
            strcpy(matri[i].Cognome_Sposo, sposo);
            strcpy(matri[i].Cognome_Sposa, sposa);
            matri[i].Data = data;
            matri[i].Invitati = invitati;
            i++;
            while (!feof(stdin)) {
                printf("%15s%15s%6d%18d", sposo, sposa, data, invitati);
                fscanf(cfPtr, "%s%s%d%d", sposo, sposa, &data, &invitati);
                strcpy(matri[i].Cognome_Sposo, sposo);
                strcpy(matri[i].Cognome_Sposa, sposa);
                matri[i].Data = data;
                matri[i].Invitati = invitati;
                i++;
            } /* end while */
    
         fclose(cfPtr);
    
        } /* end else */
    
        return 0;
    }

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 © 2026 vBulletin Solutions, Inc. All rights reserved.