Algoritmi in Programare - Lucru cu Fisiere Binare si Text in C

Imagine preview
(7/10 din 1 vot)

Acest proiect trateaza Algoritmi in Programare - Lucru cu Fisiere Binare si Text in C.
Mai jos poate fi vizualizat un extras din document (aprox. 2 pagini).

Arhiva contine 5 fisiere doc, cpp, exe, obj, bak de 10 pagini (in total).

Iti recomandam sa te uiti bine pe extras si pe imaginile oferite iar daca este ceea ce-ti trebuie pentru documentarea ta, il poti descarca. Ai nevoie de doar 4 puncte.

Domeniu: Calculatoare

Extras din document

#include <conio.h>

#include <stdio.h>

#include <string.h>

int terminareProgram = 0;

int optiuneInexistenta = 0;

typedef struct{ char numeAlbum[40],numeArtist[40];

int durata, nrMelodii, is;

char melodii[15][30];

}

album;

int nrart(FILE *f,int l)

{

long poz=ftell(f);

fseek(f,0,2);

int n=ftell(f)/l;

fseek(f,poz,0);

return n;

}

void doCreare()

{

FILE *f;

album m;

int cod;

char fis[20];

printf("nIntroduceti numele fisierului: ");

gets(fis);

f=fopen(fis, "wb+");

//while(!feof(stdin))

int repetare = 1;

while(repetare)

{

printf("nIntroduceti codul albumului: ");

scanf("%d",&cod );

if(cod >= nrart(f,sizeof(album) ) )

{ m.is=0;

fseek(f,0,2);

for(int i=nrart(f,sizeof(album)); i<cod; i++)

fwrite(&m,sizeof(album),1,f);

}

fseek(f,cod*sizeof(album),0);

fread(&m,sizeof(album),1,f);

if(m.is==1)

printf("nAlbumul este deja inregistrat ");

else

{

printf("nIntroduceti numele albumului: ");

fflush(stdin);

gets(m.numeAlbum);

printf("nIntroduceti numele artistului: ");

fflush(stdin);

gets(m.numeArtist);

printf("nIntroduceti durata totala a albumului(min): " );

scanf("%d" ,&m.durata);

printf("nIntroduceti numarul de melodii de pe album: ");

scanf("%d", &m.nrMelodii);

fflush(stdin);

for(int i=0; i<m.nrMelodii; i++)

{

printf("n Melodia %d: ",i+1);

gets(m.melodii[i]);

}

m.is=1;

fseek(f,cod*sizeof(album),0);

fwrite(&m,sizeof(album),1,f);

}

printf("n Doriti sa mai adaugati un album? d / n: ");

char option = getch();

repetare = 0;

if(option == 'd')

{

repetare = 1;

}

}

fclose(f);

}

void doAdaugare()

{

FILE *f;

album m;

int cod;

char fis[20];

printf("nIntroduceti numele fisierului: ");

gets(fis);

f=fopen(fis, "rb+");

if(!f)

{

f = fopen(fis, "wb+");

}

int repetare = 1;

//while(!feof(stdin))

while(repetare)

{

printf("nIntroduceti codul albumului de adaugat: ");

scanf("%d",&cod );

if(cod >= nrart(f,sizeof(album) ) )

{ m.is=0;

fseek(f,0,2);

for(int i=nrart(f,sizeof(album)); i<cod; i++)

fwrite(&m,sizeof(album),1,f);

}

fseek(f,cod*sizeof(album),0);

fread(&m,sizeof(album),1,f);

if(m.is==1)

printf("nAlbumul este deja inregistrat ");

else

{

printf("nIntroduceti numele albumului: ");

fflush(stdin);

gets(m.numeAlbum);

printf("nIntroduceti numele artistului: ");

fflush(stdin);

gets(m.numeArtist);

printf("nIntroduceti durata totala a albumului(min): " );

scanf("%d" ,&m.durata);

printf("nIntroduceti numarul de melodii de pe album: ");

scanf("%d", &m.nrMelodii);

fflush(stdin);

for(int i=0; i<m.nrMelodii; i++)

{

printf("n Melodia %d: ",i+1);

gets(m.melodii[i]);

}

m.is=1;

fseek(f,cod*sizeof(album),0);

fwrite(&m,sizeof(album),1,f);

}

printf("n Doriti sa mai adaugati un album? d / n: ");

char option = getch();

repetare = 0;

if(option == 'd')

{

repetare = 1;

}

}

fclose(f);

}

void doModificare()

{

FILE *f;

album m;

int cod;

char fis[20];

printf("nIntroduceti numele fisierului: ");

gets(fis);

f=fopen(fis, "rb+");

if(!f)

{

printf("n Nu exista fisierul de modificat");

getch();

return;

}

int repetare = 1;

// while(!feof(stdin))

while(repetare)

{

printf("nIntroduceti codul albumului de modificat: ");

scanf("%d",&cod);

if(cod >= nrart(f,sizeof(album) ) )

{

m.is = 0;

}

else

{

fseek(f,cod*sizeof(album),0);

fread(&m,sizeof(album),1,f);

}

if(m.is==0)

printf("nAlbumul nu este inregistrat ");

else

{

printf("nAlbum de modificat:");

printf("nnumele albumului: %s", m.numeAlbum);

printf("nnumele artistului: %s",m.numeArtist);

printf("ndurata totala a albumului(min): %d", m.durata);

printf("nnumarul de melodii de pe album: %d", m.nrMelodii);

{for(int i=0; i<m.nrMelodii; i++)

{

printf("n Melodia %d: %s",i+1, m.melodii[i]);

}}

printf("nIntroduceti numele albumului: ");

fflush(stdin);

gets(m.numeAlbum);

printf("nIntroduceti numele artistului: ");

fflush(stdin);

gets(m.numeArtist);

printf("nIntroduceti durata totala a albumului: " );

scanf("%d" ,&m.durata);

printf("nIntroduceti numarul de melodii de pe album: ");

scanf("%d", &m.nrMelodii);

fflush(stdin);

{for(int i=0; i<m.nrMelodii; i++)

Fisiere in arhiva (5):

  • PROIECT.BAK
  • PROIECT.CPP
  • proiect.doc
  • proiect.exe
  • proiect.obj