#include <stdio.h>
#include <stdlib.h>
struct persona
{
char cognome[20];
int matricola;
float media;
}s[100];
main()
{
/*Punto uno*/
FILE *f;
FILE *c;/*per il punto due e tret*/
FILE *creazione;
int i;
int n; /*Puntatore dell'fread*/
char iniziale;
char nomefile[]= "A.txt";
char procedi; /*punto tre, procedi: Y/N*/
int k; /*da usare nel secondo ciclo for*/
f = fopen("c:\\STUDENTI.BIN","rb");
if(f == NULL)
{
printf("Si è verificato un errore di apertura del file studenti.bin");
exit(1);
}
n = fread(s,sizeof(struct persona),100,f); /*Acquisisco i dati del file in un array*/
for(i=0;i<n;i++)
{
printf("%s %d %f\n", s[i].cognome,s[i].matricola,s[i].media);
}
fclose(f);
/*Punto due*/
printf("\n\nInserisci la prima lettera del cognome di cui vuoi creare il file txt: ");
scanf("\n%c", &iniziale);
nomefile[0]=iniziale;
printf("%s", nomefile);
c = fopen(nomefile,"wt");
if(c==NULL)
{
printf("Si è verificato un errore!!");
exit(1);
}
for(i=0;i<n;i++) /*Punto due, creazione file .txt con lettera scelta dall'utente*/
{
if (iniziale == s[i].cognome[0])
{
fprintf(c,"%s\n",s[i].cognome);
}
}
printf("\nIl file e' stato creato con successo!!\n");
fclose(c);
/*Punto tre*/
printf("\n\n%d\n\n", k);
while(procedi != 'Y' && procedi != 'N')
{
printf("Procediamo col punto tre? (Y/N): ");
scanf("\n%c", &procedi);
}
if (procedi == 'Y')
{
printf("Eseguo il punto tre!\n");
for(k='A';k<='Z';k++);
{
printf("%d",k);
nomefile[0] = k;
creazione = fopen(nomefile,"wt");
for(i=0;i<n;i++) /*Punto due, creazione file .txt con lettera scelta dall'utente*/
{
if (s[i].cognome[0] == k)
{
fprintf(creazione,"%s\n",s[i].cognome);
}
}
fclose(creazione);
}
printf("\nScrittura eseguita con successo!\nFine del programma\n");
}
if (procedi == 'N')
{
printf("Fine del programma\n");
}
}
Io l'ho risolto con l'aiuto del venerando Sirbone, vediamo se vi dilettate a trovarlo!!
#include <stdlib.h>
struct persona
{
char cognome[20];
int matricola;
float media;
}s[100];
main()
{
/*Punto uno*/
FILE *f;
FILE *c;/*per il punto due e tret*/
FILE *creazione;
int i;
int n; /*Puntatore dell'fread*/
char iniziale;
char nomefile[]= "A.txt";
char procedi; /*punto tre, procedi: Y/N*/
int k; /*da usare nel secondo ciclo for*/
f = fopen("c:\\STUDENTI.BIN","rb");
if(f == NULL)
{
printf("Si è verificato un errore di apertura del file studenti.bin");
exit(1);
}
n = fread(s,sizeof(struct persona),100,f); /*Acquisisco i dati del file in un array*/
for(i=0;i<n;i++)
{
printf("%s %d %f\n", s[i].cognome,s[i].matricola,s[i].media);
}
fclose(f);
/*Punto due*/
printf("\n\nInserisci la prima lettera del cognome di cui vuoi creare il file txt: ");
scanf("\n%c", &iniziale);
nomefile[0]=iniziale;
printf("%s", nomefile);
c = fopen(nomefile,"wt");
if(c==NULL)
{
printf("Si è verificato un errore!!");
exit(1);
}
for(i=0;i<n;i++) /*Punto due, creazione file .txt con lettera scelta dall'utente*/
{
if (iniziale == s[i].cognome[0])
{
fprintf(c,"%s\n",s[i].cognome);
}
}
printf("\nIl file e' stato creato con successo!!\n");
fclose(c);
/*Punto tre*/
printf("\n\n%d\n\n", k);
while(procedi != 'Y' && procedi != 'N')
{
printf("Procediamo col punto tre? (Y/N): ");
scanf("\n%c", &procedi);
}
if (procedi == 'Y')
{
printf("Eseguo il punto tre!\n");
for(k='A';k<='Z';k++);
{
printf("%d",k);
nomefile[0] = k;
creazione = fopen(nomefile,"wt");
for(i=0;i<n;i++) /*Punto due, creazione file .txt con lettera scelta dall'utente*/
{
if (s[i].cognome[0] == k)
{
fprintf(creazione,"%s\n",s[i].cognome);
}
}
fclose(creazione);
}
printf("\nScrittura eseguita con successo!\nFine del programma\n");
}
if (procedi == 'N')
{
printf("Fine del programma\n");
}
}
Io l'ho risolto con l'aiuto del venerando Sirbone, vediamo se vi dilettate a trovarlo!!
Comment