PDA

Visualizza la versione completa : [C] Lavorare con i file per modificare ed eliminare i contenuti


giacomo199817
17-04-2018, 17:56
salve raga , mi e' stato assegnato un esercizio e non ho ben chiaro come svolgerlo e vorrei delle delucidazioni da voi su come muovermi.
in pratica :
1) devo caricare da file un elenco degli artisti: esempio: 1,bobsinclair,1980,house ecc
2) aggiungere,modificare, e eliminare questi artisti
3)caricare da file un elenco di utenti
4)caricamento e salvataggio delle preferenze degli utenti , da file .. esempio: utente 1, pitbull, like
5) aggiungere,modificare,eliminare preferenze.

voi avreste un idea su come impostare questo programma? mi serve per un progetto e vorrei avere dei consigli da voi piu' esperti :mem: ( per esempio, devo creare una struct? come modificare un singolo punto dell utente o come cancellarlo?) . Ringrazio anticipatamente tutti e spero possa avere una buona permanenza nel forum:ciauz:

giacomo199817
17-04-2018, 19:28
************AGGIORNAMENTO POST *******************
salve raga , mi e' stato assegnato un esercizio e non ho ben chiaro come svolgerlo e vorrei delle delucidazioni da voi su come muovermi.
in pratica :
1) devo caricare da file un elenco degli artisti: esempio: 1,bobsinclair,1980,house ecc
2) aggiungere,modificare, e eliminare questi artisti
3)caricare da file un elenco di utenti
4)aggiunta , modifica ed eliminazione utenti
5)caricamento e salvataggio delle preferenze degli utenti , da file .. esempio: utente 1, pitbull, like
6) aggiungere,modificare,eliminare preferenze
7)ricerca artisti ( per genere o nazionalita' ecc...)
8)ordinamento artisti (per top 10 piu ascoltati ..)
9)dato un utente, mostrare il suo profilo con gli artisti ascoltati e l' elenco degli artisti graditi

voi avreste un idea su come impostare questo programma? mi serve per un progetto e vorrei avere dei consigli da voi piu' esperti :mem: . Ringrazio anticipatamente tutti e spero possa avere una buona permanenza nel forum:ciauz:

oregon
18-04-2018, 09:21
Ovviamente devi usare delle strutture e, a seconda di cosa avete usato e studiato, array o liste.Dovrai conoscere come trattare i file binari per leggere e scrivere le strutture.Non vedo particolari difficoltà, se ci metti attenzione e strutturi bene in funzioni, dovresti farcela.

giacomo199817
18-04-2018, 12:05
Ovviamente devi usare delle strutture e, a seconda di cosa avete usato e studiato, array o liste.Dovrai conoscere come trattare i file binari per leggere e scrivere le strutture.Non vedo particolari difficoltà, se ci metti attenzione e strutturi bene in funzioni, dovresti farcela.

L unica cosa che non ho capito è proprio come "rintracciare" una porzione del codice per modificarla o eliminarla

oregon
18-04-2018, 16:10
L unica cosa che non ho capito è proprio come "rintracciare" una porzione del codice per modificarla o eliminarla

Una "porzione di codice"? Che intendi?

giacomo199817
18-04-2018, 17:13
Una "porzione di codice"? Che intendi? intendo nel file , se voglio modificare una parte ( per esempio della struct) come faccio?

oregon
18-04-2018, 18:56
Carica tutto in memoria, fai le modifiche in memoria e a richiesta o alla fine salvi su disco.

giacomo199817
20-04-2018, 17:27
Carica tutto in memoria, fai le modifiche in memoria e a richiesta o alla fine salvi su disco. Ho messo giu' un codice di prova , in pratica se provo a premere "1" per la scrittura sul file avviene correttamente, quando premo 2 invece non mi visualizza l output, questo posso vederlo solo dopo aver chiuso il programma e premendo 2 , se lo visualizzo prima non appare nulla, potresti aiutarmi? ecco il codice:



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








//struttura
struct person
{
int id;
char fname[20];
char lname[20];
};


int main ()


{
//************************************************** ****************************
unsigned int scelta; //scelta per il menu
char torna; //ritorno al menu o uscita
do {
system("COLOR E"); //modifica il colore delle scritte
printf("*************************\n"); //*
printf("BENVENUTO IN SPOTIFY\n"); //*
printf("*************************\n"); //*
//*
//menu riguardante solo artisti //*
printf("1) Scrivi su file gli artisti\n\n"); //*
printf("2) Visualizza gli artisti scritti su file\n\n"); //*
printf("3) Aggiungi/Modifica/Elimina--Artisti\n\n"); //*
//*
//menu riguardante solo utenti //*
printf("4) Scrivi su file gli utenti\n\n"); //*
printf("5) Visualizza gli utenti scritti su file\n\n"); //*
printf("6) Aggiungi/Modifica/Elimina--Utenti\n\n"); //*
//*
//preferenze utenti //*
printf("7) Scrivi su file le preferenze degli utenti\n\n"); //*
printf("8) Aggiungi/Modifica/Elimina--Preferenze\n\n"); //*
//*
//ricerca e ordinamento artisti //*
printf("9) Ricerca degli artisti\n\n"); //*
printf("10) Ordina gli artisti\n\n"); //*
//*
//visualizza utente //*
printf("11) Mostra il profilo completo di un singolo utente\n\n"); //*
//*
//scelta //*
menu: //*
printf("Inserisci numero scelto: "); //*
//*
scanf("%u",&scelta);


switch(scelta){
case 1:
{system("cls");
FILE *outfile;


// open file for writing
outfile = fopen ("person.dat", "w");
if (outfile == NULL)
{
fprintf(stderr, "\nError opend file\n");
exit (1);
}


struct person input1 = {1, "rohan", "sharma"};
struct person input2 = {2, "mahendra", "dhoni"};


// write struct to file
fwrite (&input1, sizeof(struct person), 1, outfile);
fwrite (&input2, sizeof(struct person), 1, outfile);


if(fwrite != 0)
printf("contents to file written successfully !\n");
else
printf("error writing file !\n");
system("pause");
system("cls");}
break;


case 2:
{system("cls");
FILE *infile;
struct person input;


// Open person.dat for reading
infile = fopen ("person.dat", "r");
if (infile == NULL)
{
fprintf(stderr, "\nError opening file\n");
exit (1);
}


// read file contents till end of file
while(fread(&input, sizeof(struct person), 1, infile))
printf ("id = %d name = %s %s\n", input.id,
input.fname, input.lname);
system("pause");
system("cls");}
break;


case 3:
{system("cls");
//funzione1();
system("pause");
system("cls");}
break;


case 4:
{system("cls");
//funzione1();
system("pause");
system("cls");}
break;


case 5:
{system("cls");
//funzione1();
system("pause");
system("cls");}
break;


case 6:
{system("cls");
//funzione1();
system("pause");
system("cls");}
break;


case 7:
{system("cls");
//funzione1();
system("pause");
system("cls");}
break;


case 8:
{system("cls");
//funzione1();
system("pause");
system("cls");}
break;


case 9:
{system("cls");
//funzione1();
system("pause");
system("cls");}
break;


case 10:
{system("cls");
//funzione1();
system("pause");
system("cls");}
break;


case 11:
{system("cls");
//funzione1();
system("pause");
system("cls");}
break;




default:
system("cls");
printf("Scelta non valida\n");


}


printf("Si desidera tornare al Menu' Principale?\n\n");
printf("[y] Si, desidero tornare al Menu' Principale\n\n");
printf("[n] No, desidero uscire\n\n");
printf("Effettua la tua scelta: ");
scanf("%s",&torna);
system("cls");
}
while (torna!='n');
return 0;
}

Loading