#include <stdio.h>
#include <time.h>
typedef struct
{
char palo;
int numero;
} Carte;
typedef struct
{
Carte vett_carte[40];
int num_carte;
} CarteNapoletane;
void leggi_carte(CarteNapoletane *carte);
void scrivi_carte(CarteNapoletane carte);
int main()
{
CarteNapoletane carte;
leggi_carte(&carte);
scrivi_carte(carte);
return 0;
}
void leggi_carte(CarteNapoletane *carte)
{
int i,
carte_lette;
carte->num_carte = 0;
FILE *file_carte;
file_carte = fopen("mazzo_di_carte.txt", "r");
carte_lette = fscanf(file_carte, "%d%c", &carte->vett_carte[carte->num_carte].numero,
&carte->vett_carte[carte->num_carte].palo);
while(carte_lette == 2)
{
carte->num_carte++; /* scorrimento di tutte le carte presenti nel file */
carte_lette = fscanf(file_carte, "%d%c", &carte->vett_carte[carte->num_carte].numero,
&carte->vett_carte[carte->num_carte].palo);
}
fclose(file_carte);
}
/* definizione della funzione per scrivere su file voti ordinati */
void scrivi_carte(CarteNapoletane carte)
{
/* dichiarazioni delle variabili */
FILE *file_carte_random; /* lavoro: puntatore al file di output */
int i; /* indice di scorrimento ciclo for */
/* apri file */
file_carte_random = fopen("carte.txt", "w");
srand(time(0));
/* ciclo per la scrittura su file delle carte */
for (i = 0; i < carte.num_carte; i++)
{
do
{
i = rand() % carte.num_carte;
if(!i)
{
/* comunicare su file la scrittura di cognome, matricola e voto */
fprintf(file_carte_random,"\n%d%c", carte.vett_carte[i].numero,
carte.vett_carte[i].palo);
}
}
while(!i);
}
/* chiudere i file */
fclose(file_carte_random);
}