Sunteți pe pagina 1din 6

SEMINAR ATP 3

Creare
#define_CRT_SECURE_NO_WARNINGS
#include<stdio.h>
Typedef struct {
int cod;
char nume[20];
int cant;
float pret;
} PRODUS;
Void main()
{
FILE *f;
Char numef[30];
PRODUS p;
printf("numefis:");
scanf("%s", numef);
f = fopen(numef, "wb");
if(!f) printf("eroare");
else
{
printf("cod="); scanf("%d", &p.cod);
while(!feof(stdin))
{
getchar();
printf("nume="); scanf("%s", p.nume);
printf("cant="); scanf("%d", &p.cant);
printf("pret=");
scanf("%f", &p.pret);
fwrite(&p, sizeof(PRODUS), 1, f);
printf("cod="); scanf("%d", &p.cod);

}
fclose(f);

}
}
Adaugare
Modificammodul de deschidere “wb” devine “rb+”

#define_CRT_SECURE_NO_WARNINGS
#include<stdio.h>
Typedef struct {
int cod;
char nume[30];
int cant;
float pret;
} PRODUS;
Void main()
{
FILE *f;
charnumef[30];
PRODUS p;
printf("numefis:");
scanf("%s", numef);
f = fopen(numef, "rb+");
if(!f) printf("eroare");
else
{
fseek(f, 0, 2);
printf("cod="); scanf("%d", &p.cod);
while(!feof(stdin))
{
getchar();
printf("nume="); scanf("%s", p.nume);
printf("cant="); scanf("%d", &p.cant);
printf("pret=");
scanf("%f", &p.pret);
fwrite(&p, sizeof(PRODUS), 1, f);
printf("cod="); scanf("%d", &p.cod);

}
fclose(f);

}
}
CONSULTARE INTEGRALA
#define_CRT_SECURE_NO_WARNINGS
#include<stdio.h>
typedefstruct {
int cod;
charnume[20];
intcant;
floatpret;
} PRODUS;
voidmain()
{
FILE *f;
charnumef[30];
PRODUS p;
printf("numefis:");
scanf("%s", numef);
f = fopen(numef, "rb+");
if(!f) printf("eroare");
else
{
FILE *g;
printf("numeraport:");
scanf("%s", numef);
g = fopen(numef, "w");
fread(&p, sizeof(PRODUS), 1, f);
while(!feof(f))
{
fprintf(g, "%4.d %30s %3d %4.1f\n", p.cod, p.nume, p.cant, p.pret);
fread(&p, sizeof(PRODUS), 1, f);
}
fclose(f);
fclose(g);
}
}

SE CONSIDERA UN ALT FISIER TEXT


CONSULTARE CU SELECTIE
Dacacantitatea e mai mare decat 5
#define_CRT_SECURE_NO_WARNINGS
#include<stdio.h>
typedefstruct {
int cod;
charnume[20];
intcant;
floatpret;
} PRODUS;
voidmain()
{
FILE *f;
charnumef[30];
PRODUS p;
printf("numefis:");
scanf("%s", numef);
f = fopen(numef, "rb+");
if(!f) printf("eroare");
else
{
FILE *g;
printf("numeraport:");
scanf("%s", numef);
g = fopen(numef, "w");
fread(&p, sizeof(PRODUS), 1, f);
while(!feof(f))
{if(p.cant>5)DACA EXISTA PRODUSE CU CANT MAI MARE DE 5 FACE UN ALT FISIER
fprintf(g, "%4.d %30s %3d %4.1f\n", p.cod, p.nume, p.cant, p.pret);
fread(&p, sizeof(PRODUS), 1, f);
}
fclose(f);
fclose(g);
}
}
MODIFICARE INTEGRALA
#define_CRT_SECURE_NO_WARNINGS
#include<stdio.h>
typedefstruct {
int cod;
charnume[20];
intcant;
floatpret;
} PRODUS;
voidmain()
{
FILE *f;
charnumef[30];
PRODUS p;
printf("numefis:");
scanf("%s", numef);
f = fopen(numef, "rb+");
if(!f) printf("eroare");
else
{
fread(&p, sizeof(PRODUS), 1, f);
while(!feof(f))
{
p.cant += 10;
fseek(f, ftell(f) - sizeof(PRODUS), 0);
fwrite(&p, sizeof(PRODUS), 1, f);
fseek(f, 0, 1);
fread(&p, sizeof(PRODUS), 1, f);
}
fclose(f);
}
}

Pentru a vedea rezultatele, apelam o data modificare cu selectie, apoi aplam consultarei
ntegrala.

Programul de mai sus adauga 10 bucati din fiecare element.


MODIFICARE CU SELECTIE
#define_CRT_SECURE_NO_WARNINGS
#include<stdio.h>
typedefstruct {
int cod;
charnume[20];
intcant;
floatpret;
} PRODUS;
voidmain()
{
FILE *f;
charnumef[30];
PRODUS p;
printf("numefis:");
scanf("%s", numef);
f = fopen(numef, "rb+");
if(!f) printf("eroare");
else
{
fread(&p, sizeof(PRODUS), 1, f);
while(!feof(f))
{ if(p.cant>20)
{p.cant += 10;
fseek(f, ftell(f) - sizeof(PRODUS), 0);
fwrite(&p, sizeof(PRODUS), 1, f);
fseek(f, 0, 1); }
fread(&p, sizeof(PRODUS), 1, f);
}
fclose(f);
}
}

S-ar putea să vă placă și