Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- scrivere un prohramma che crei un record cittadino con i seguenti campi:
- Nome, Cognome, Paese, Eta, Sesso;
- I campi cognome nome e paese verranno inseriti dall'utente come il numero di
- cittadini da inserire.
- i campi eta e sesso verranno insriti arbitrariamente;
- Scrivere una funzione che permetta di aggiornare i campi di un record cittadino
- a partire da una input preso arbitrariamente da un array di stringhe contenenti
- il campo nome cognome ed paese per il record da aggiornare.
- Dopo l'eventuale aggiornamento inserire il recordnelf ile denominato citt.txt
- apreire e leggere questo file prelevando le righe dei maschi e copiarle in file
- creato per il caso a contenere i record dei maschi maschi.txt ugualmente fare
- con le donne.
- */
- /*HEADER*/
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #define NAMEFILE "output.txt"
- #define OUT_MAN_TXT "out_man.txt"
- #define OUT_GIRL_TXT "out_girl.txt"
- #define INPUTSIZE 4
- /*TYPE DEFINITION*/
- typedef struct citizen{
- char name[25];
- char surname[25];
- char country[25];
- int eta;
- short int sesso;
- }citizen;
- /*PROTOTYPE*/
- int prepare_citizen();
- void insert_citizen(citizen *,int);
- void update(citizen *,char **);
- void check_input(int);
- void check_file(FILE *,char*);
- void fill_file(FILE *,citizen *,int);
- void write_file_man_and_girl(FILE *, FILE *, FILE *);
- /*BODY/MAIN PROGRAM*/
- int main( int argc,char *argv[]){
- citizen *cit;
- int num_cit;
- FILE *output, *out_man, *out_girl;
- char *data[]={"Michele","Nappi","Livorno"};
- num_cit = prepare_citizen();
- cit = calloc(num_cit, sizeof(citizen));
- insert_citizen(cit,num_cit);
- update(cit,data);
- output = fopen(NAMEFILE,"w");
- check_file(output,NAMEFILE);
- check_input(INPUTSIZE);
- fill_file(output,cit,num_cit);
- /*Inizio scrittura di due file uno per contenere i cittadini
- uomo e l'altro per le cittadine donne i dati saranno prelevati
- dal file misto output scritto in precedenza */
- output = fopen(NAMEFILE,"r");
- check_file(output,NAMEFILE);
- out_man = fopen(OUT_MAN_TXT,"w");
- check_file(out_man,OUT_MAN_TXT);
- out_girl = fopen(OUT_GIRL_TXT,"w");
- check_file(out_girl,OUT_GIRL_TXT);
- write_file_man_and_girl(output,out_man,out_girl);
- }
- /*FUNCTION DECLARETION*/
- int prepare_citizen(){
- int num_cit;
- printf("How many citizens do you want insert?\t");
- scanf("%d",&num_cit);
- return num_cit;
- }
- void insert_citizen(citizen *c,int s){
- int i;
- for(i=0;i<s;i++){
- printf("\nInsert name: ");
- scanf("%s",(c+i)->name);
- printf("\nInsert Surname: ");
- scanf("%s",(c+i)->surname);
- printf("\nInsert Country: ");
- scanf("%s",(c+i)->country);
- srand(time(NULL));
- (c+i)->sesso = rand()%2;
- (c+i)->eta = rand()%100;
- }
- }
- void update(citizen *c,char **data){
- int id_record;
- printf("quale reord vuoi aggiornare?\n");
- printf("scegli 1 o 2 per aggiornare i rispettivi record");
- scanf("%d",&id_record);
- strcpy((c+id_record-1)->name,data[0]);
- strcpy((c+id_record-1)->surname,data[1]);
- strcpy((c+id_record-1)->country,data[2]);
- srand(time(NULL));
- (c+id_record-1)->eta=rand()%100;
- (c+id_record-1)->sesso=rand()%2;
- }
- void check_file(FILE *f,char *name_file){
- if(f==NULL){
- printf("Sorry, this is embarassing, \n"
- "we will work immediately for solve the issue\n"),
- exit(EXIT_FAILURE);
- }
- printf("Congrats, the file %s is opened successfully\n",name_file);
- }
- void check_input(int input_size){
- if(input_size!=4){
- printf("Ops, something is gone wrong,there is a \n"
- "mismatch when you have typed the command");
- exit(EXIT_FAILURE);
- }
- printf("Congrats, The right command is typed.");
- }
- void fill_file(FILE *f, citizen *cit,int num_cit){
- int i = 0;
- while(i<num_cit){
- fprintf(f,"%d\t%s\t%s\t%s\t%d\n",
- (cit+i)->sesso,
- (cit+i)->name,
- (cit+i)->surname,
- (cit+i)->country,
- (cit+i)->eta);
- i++;
- }
- rewind(f);
- fclose(f);
- }
- void write_file_man_and_girl(FILE *f_source, FILE *f_dest_man, FILE *f_dest_girl){
- int sex, age;
- char name[25], surname[25], city[25];
- while(fscanf(f_source,"%d%s%s%s%d",&sex,name,surname,city, &age)!=EOF){
- if(sex==0)
- fprintf(f_dest_man,"%d\t%s\t%s\t%s\t%d\n",sex,name,surname,city, age);
- else
- fprintf(f_dest_girl,"%d\t%s\t%s\t%s\t%d\n",sex,name,surname,city, age);
- }
- }
Add Comment
Please, Sign In to add comment