Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C] leggere da file record di tipo T

    Salve ragazzi. Vorrei sapere se è corretto scrive cosi questa funzione:
    codice:
    void insrec(char* fname1, char* fname2, Record rec) {
    	FILE* f1 = fopen(fname1, "rb");
    	FILE* f2 = fopen(fname2, "wb");
    	if(f1 == NULL || f2 == NULL) {
    		printf("Errore nell'apertura di uno dei due files\n");
    		return 0;
    	}
    	Record* ptrRec;
    	while(!feof(f1)) {
    		ptrRec = malloc(sizeof(Record));
    		fread(ptrRec, sizeof(Record), 1, f1);                         <--MIO DUBBIO, GIUSTO?
    		if(ptrRec->value >= rec.value) {
    			fwrite(&rec, sizeof(Record), 1, f2);                   <--MIO DUBBIO, GIUSTO?
    			fwrite(ptrRec, sizeof(Record), 1, f2);                <--MIO DUBBIO, GIUSTO?
    			free(ptrRec);
    		}
    		else {
    			fwrite(ptrRec, sizeof(Record), 1, f2);                <--MIO DUBBIO, GIUSTO?
    			free(ptrRec);
    		}
    	}
    	fclose(f1);
    	fclose(f2);
    }
    struttura di riferimento:
    codice:
    typedef struct {
        long       value;
        char       descr[30];
    } Record;
    Testo esercizio:
    Scrivere una funzione void insrec(char *fname1, char *fname2, Record rec) che presi in input i nomi di due file binari (nelle stringhe fname1 e fname2), tali che il primo file contiene una sequenza di record di tipo Record ordinata in senso crescente rispetto al campo value, scrive nel secondo file i record del primo file aggiungendovi il record rec inserito in modo da rispettare l'ordinamento. Ad esempio, se il primo file contiene

    {3, "vite"} {5, "dado"} {5, "dado2"} {8, "punta"}

    e se rec = {2, "martello"} allora la funzione scrive nel secondo file

    {2, "martello"} {3, "vite"} {5, "dado"} {5, "dado2"} {8, "punta"}

    se invece rec = {6, "martello"}, la funzione scrive nel secondo file

    {3, "vite"} {5, "dado"} {5, "dado2"} {6, "martello"} {8, "punta"}

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462

    Re: [C] leggere da file record di tipo T

    Originariamente inviato da VYCanisMajoris
    Salve ragazzi. Vorrei sapere se è corretto scrive cosi questa funzione:
    Ma c'è un preciso problema?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Scusami, non mi sono spiegato. Il problema è che ho un dubbio sulle righe che sopra ho marcato nel codice. Non so se sono giuste. Cioè non so se da un file posso leggere un blocco di byte che è definito in sizeof(Record) e quel Record è una struct che ha al suo interno un valore long ed una stringa.
    Una volta letti e copiati sul puntatore ptrRec li vado a scrivere nell'altro file.
    Il dubbio purtroppo ora come ora non posso provarlo perche sto aspettando che cygwin si reistalli(sto riscaricando i pacchetti perche non so che è successo non si avvia piu) e quindi non posso compilare. Quindi posso solo esercitarmi cosi a scrivere senza compilatore.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da VYCanisMajoris
    ... se da un file posso leggere un blocco di byte che è definito in sizeof(Record) e quel Record è una struct che ha al suo interno un valore long ed una stringa.
    Sì, puoi gestire quella struttura in quel modo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.