codice:
#include <stdio.h>
#include <stdlib.h>
#define maxchar 20
#define N 10
/*
*
*/
int main() {
struct eventi{
char sposo[maxchar];
char sposa[maxchar];
int dat;
int invi;
}evento[N];
char cognomesposo[N];
char cognomesposa[N];
int data;
int datacerca;
int invitati;
int i,j,k, appo;
char buffer[N];
FILE *cfPtr;
if ((cfPtr = fopen ("eventi.dat", "w")) == NULL){
printf ("il file non può essere aperto");
}else{
printf ("Inserisci i dati : \n");
printf ("Inserisci EOF per terminare l'inserimento \n");
printf ("\n\n%-10s%-10s%-10s%-10s\n", "SPOSO", "SPOSA", "DATA", "INVITATI");
scanf ("%s%s%d%d", cognomesposo, cognomesposa, &data, &invitati);
while (!feof(stdin)){
fprintf (cfPtr, "%s %s %d %d\n", cognomesposo, cognomesposa, data, invitati);
scanf ("%s\t%s\t%d\t%d\t", cognomesposo, cognomesposa, &data, &invitati);
}
fclose(cfPtr);
}
if ((cfPtr = fopen("eventi.dat", "r")) == NULL){
printf("il file non può essere aperto");
}else{
i = 0;
fscanf(cfPtr, "%s%s%d%d", cognomesposo, cognomesposa, &data, &invitati);
strcpy(evento[i].sposo,cognomesposo);
strcpy(evento[i].sposa,cognomesposa);
evento[i].dat = data;
evento[i].invi = invitati;
i++;
while (!feof(cfPtr)){
const int aResult = fscanf(cfPtr, "%s%s%d%d", cognomesposo, cognomesposa, &data, &invitati);
if (aResult != -1){
strcpy(evento[i].sposo, cognomesposo);
strcpy(evento[i].sposa, cognomesposa);
evento[i].dat = data;
evento[i].invi = invitati;
i++;
}
}
}
for (j = 0; j < i - 1; j++){
for (k = j + 1; k < i; k++){
if (evento[j].invi < evento[k].invi){
strcpy(buffer,evento[k].sposo);
strcpy(evento[k].sposo,evento[j].sposo);
strcpy(evento[j].sposo,buffer);
strcpy(buffer,evento[k].sposa);
strcpy(evento[k].sposa,evento[j].sposa);
strcpy(evento[j].sposa,buffer);
appo = evento[k].dat;
evento[k].dat = evento[j].dat;
evento[j].dat = appo;
appo = evento[k].invi;
evento[k].invi = evento[j].invi;
evento[j].invi = appo;
}
}
}
printf ("\n\n%-10s%-10s%-10s%-10s", "SPOSO", "SPOSA", "DATA", "INVITATI");
for (j = 0; j < i; j++){
printf ("\n%-10s%-10s%-10d%-10d", evento[j].sposo, evento[j].sposa,evento[j].dat,evento[j].invi);
}
printf ("\n\nInserisci la data del matrimonio\n");
scanf ("%d",&datacerca);
for (j = 0; j < i; j++){
if (datacerca == evento[j].dat){
printf ("\n\n%-10s%-10s", "SPOSO", "SPOSA");
printf ("\n%-10s%-10s", evento[j].sposo, evento[j].sposa);
}
}
if ((cfPtr = fopen ("eventi.dat", "w")) == NULL){
printf ("il file non può essere aperto");
}else{
for (j = 0; j < i; j++){
strcpy(cognomesposo, evento[j].sposo);
strcpy(cognomesposo, evento[j].sposo);
data = evento[j].dat;
invitati = evento[j].invi;
fprintf (cfPtr, "%s %s %d %d\n", cognomesposo, cognomesposa, data, invitati);
}
fclose(cfPtr);
}
system("PAUSE");
return 0;
}