
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main()
{
FILE *f1,*f2;
int numero,i;
if((f1=fopen("quattro.txt","r"))==NULL)
printf("Errore
apertura file\n");
else{
f2=fopen("quattro1.dat","w");
while(fscanf(f1,"%d",&numero)!=EOF){
fprintf(f2,"%d\n",numero);
}
for(i=0;i<10;i++){
numero=numero+4;
fprintf(f2,"%d\n",numero);
}
}
fclose(f1);
fclose(f2);
printf("Fine elaborazione\n");
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct libro
{
char codice[7];
char autore[21];
char titolo[31];
char casaed[16];
int anno;
int disp;
};
FILE *f1;
void opzione1();
void opzione2();
void main()
{
int scelta;
if((f1=fopen("libri.dat","r+"))==NULL)
{
printf("Errore
open file\n");
getchar();
exit(0);
}
do{
printf("1: Prestito\n");
printf("2: Libri di un autore\n");
printf("3: esci\n");
printf("Scegli: ");
scanf("%d",&scelta);
switch(scelta){
case 1: opzione1();
break;
case 2: opzione2();
break;
case 3: break;
default:
printf("Scelta errata\n");
break;
}
getchar();
}while (scelta!=3);
fclose(f1);
}
void opzione1()
{
char cod[6];
libro l;
int inizio,fine,centro;
int trovato;
printf("Dammi il codice del libro\n");
scanf("%s",cod);
// cerca libro con ricerca binaria
inizio=0;
fseek(f1,0L,SEEK_END);
fine= (ftell(f1)/sizeof(libro))-1;
trovato=0;
while( !trovato && inizio<=fine){
centro=(inizio+fine)/2;
fseek(f1,centro*sizeof(libro),SEEK_SET);
fread(&l,sizeof(libro),1,f1);
if(strcmp(l.codice,cod)==0)trovato=1;
else
if(strcmp(l.codice,cod)>0)fine=centro-1;
else inizio=centro+1;
}
if(trovato){
//verifica
disponibilita'
if(l.disp==1){
l.disp=0;
fseek(f1,-sizeof(libro),SEEK_CUR);
fwrite(&l,sizeof(libro),1,f1);
}
else printf("Libro
gia\\' prestato\n");
}
else printf("Libro non trovato\n");
}
void opzione2()
{
libro l;
char aut[21], nomefile[20];
FILE *f2;
printf("Dammi autore: ");
gets(aut);
printf("Dammi nome file: ");
gets(nomefile);
f2=fopen(nomefile,"w");
rewind(f1);
while(fread(&l,sizeof(libro),1,f1)!=0){
if(strcmp(l.autore,aut)==0
&& l.disp==1){
fprintf(f2,"%s
%s\n",l.titolo,l.casaed);
}
}
fclose(f2);
}