Sunteți pe pagina 1din 2

Pe urmatoarele linii va contine in ordine separate prin spatiu

urmatoarele:
* nume cale rezolutie dimensiune
* orice modificare asupra structurii fisierului header poate duce
la o rulare anormala a programului
* dupa fiecare header de imagine se da enter fara a se lasa
spatiu liber intre dimensiune si enter
* toate elementele care depasesc numarul declarat in prima linie
vor fi ignorate
*/
struct imagine *img=read_data(calea);
struct imagine *img_ptr;
char key_value[256];
printf("Introduceti numele pozei pe care doriti sa o cautati:
");scanf("%s",key_value);
img_ptr = (struct imagine *)lfind(&key_value, img, (size_t *)&n,
sizeof(struct imagine),
(int (*) (const void *, const void *)) cmp);
if(img_ptr != NULL)
{
printf("Sa gasit urmatoarea imagine:\n");
afis_antet(img_ptr);
}
else printf("Imaginea cautata nu a fost gasita.\n");
return 0;
}
struct imagine *read_data(char cale[])
{
FILE *fp;
if((fp = fopen(cale, "r")) == NULL)
{
return NULL;
}
fscanf(fp, "%d\n", &n);
struct imagine *img=new struct imagine[n];
for(int i=0;i<n;i++)
{
fscanf(fp,"%s %s %d
%d\n",img[i].nume,img[i].cale,&img[i].rezolutie,&img[i].dimensiune);
}
fclose(fp);
return img;
}
void afis_antet(struct imagine *img)
{
printf("Imaginea cu numele: \"%s\" care se gaseste la
calea: \"%s\" avand rezolutia %d MP are dimensiunea %d",img->nume,img-
>cale,img->rezolutie,img->dimensiune);
}
int cmp(struct imagine *v1,struct imagine *v2)
{
return strcmp(v1->nume,v2->nume);
}

###################################################################################
###################################################################################
###################################################################################
###################################################################################
################################################################

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