Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- typedef struct cittadino {
- int Sesso;
- char Cognome;
- char Nome;
- char Luogo;
- int Anno;
- } cittadino;
- void controllo_input (int);
- void controllo_file (FILE *, char *);
- cittadino *new_rec (char *);
- int conta_in_file (FILE *);
- void append_file (FILE *, cittadino *);
- void rewind (FILE *);
- void copia_da_file (FILE *, cittadino *);
- void scrivi_in_file_donna (FILE *, cittadino *, int);
- int main (int argc, char *argv[])
- {
- char *info[]={"Verde", "Luisa", "Napoli"};
- cittadino *rec, *records;
- int num_rec;
- FILE *Citt, *Donne;
- controllo_input (argc);
- Citt=fopen(argv[1], "r+");
- controllo_file (Citt, argv[1]);
- Donne=fopen(argv[2], "w");
- controllo_file (Donne, argv[2]);
- rec=new_rec(info);
- num_rec=conta_in_file(Citt);
- if(rec)
- {
- num_rec++;
- append_file (Citt, rec);
- records=calloc(num_rec, sizeof(cittadino));
- }
- else
- records=calloc(num_rec, sizeof(cittadino));
- rewind (Citt); //colloca il puntatore all'inizio del file
- copia_da_file (Citt, records); //trasferire tutti i record presenti in uno dentro array
- scrivi_in_file_donna (Donne, records, num_rec);
- fclose (Citt);
- fclose (Donne);
- free (records);
- return 0;
- }
- controllo_input (int argc)
- {
- }
- controllo_file (FILE *x, char argv[])
- {
- }
- cittadino *new_rec (char *info[])
- {
- cittadino *new;
- char risposta;
- printf ("Inserire un utente ? s|n\n");
- scanf ("%s", &risposta);
- if (risposta == 'n')
- {
- return NULL;
- }
- else {
- new=malloc(sizeof(cittadino));
- stpcpy (new->Cognome, info[0]);
- stpcpy (new->Nome, info[1]);
- stpcpy (new->Luogo, info[2]);
- printf("Anno di nascita: ");
- scanf("%d", &new->Anno);
- printf("Inserisci il sesso: "),
- scanf("%d", &new->Sesso);
- return new;
- }
- }
- int conta_in_file (FILE *in)
- {
- int num=0;
- cittadino vect;
- while (fscanf(in, "%d %s %s %S %d", &vect.Sesso, vect.Cognome, vect.Nome, vect.Luogo, &vect.Anno) !=EOF)
- num++;
- return num;
- }
- void append_file (FILE *in, cittadino *rec)
- {
- fflush(in); //buffer (registro temporaneo), serve ad azzerare il buffer quando si usa scritt e lett
- fprintf (in, "%d %s %s %s %d\n", rec->Sesso, rec->Cognome, rec->Nome, rec->Luogo, rec->Anno);
- }
- void copia_da_file (FILE *in, cittadino *records)
- {
- int i=0;
- while (fscanf (in, "%d %s %s %s %d", records[i].Sesso, records[i].Cognome, records[i].Nome, records[i].Luogo, records[i].Anno))//notazione vettore ci vuole . e non ->
- i++;
- }
- void scrivi_in_file_donna (FILE *out, cittadino *records, int num_rec)
- {
- int i;
- for (i=0; i<=num_rec; i++)
- if (records[i].Sesso == 1)
- (fprintf (out, "%d %s %s %s %d", records[i].Sesso, records[i].Cognome, records[i].Nome, records[i].Luogo, records[i].Anno));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement