Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*questo programma ti permette di inserire nome,cognome,anno di nascita
- di un determinato utente per poi stampartelo*/
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- typedef struct cittadino {
- char cognome[20];
- char nome[20];
- char luogo[20];
- int anno;
- }cittadino;
- void new_aggiorna(cittadino *);
- cittadino aggiorna_second(cittadino);
- cittadino * aggiorna(char *[]);
- void copia_in_vect(cittadino*, cittadino, cittadino,cittadino *);
- void stampa(cittadino*);
- void stampa_vect(cittadino *);
- void controllo_input(int);
- void controllo_file(FILE *,char *);
- void copia_cognomi(char **,cittadino *);
- void leggi_da_file(FILE *,cittadino *);
- void scrivi_file(FILE *,cittadino *, int);
- void scrivi_file_cognomi(FILE *,char **,int);
- void clean(char **,int);
- int main(int argc, char *argv[]){
- char *info[]={"nappi","michele"},**cognomi;
- cittadino *third,second,first,*records;
- int num_rec;
- FILE *uno,*due,*tre;
- controllo_input(argc);
- uno=fopen(argv[1],"r");
- controllo_file(uno,argv[1]);
- due=fopen(argv[2],"w");
- controllo_file(due,argv[2]);
- tre=fopen(argv[3],"w");
- controllo_file(tre,argv[3]);
- printf("quanti sono i record da creare?\n");
- scanf("%d",&num_rec);
- records=calloc(num_rec,sizeof(cittadino));
- cognomi=calloc(num_rec,sizeof(char *));
- new_aggiorna(&first);
- second=aggiorna_second(first);
- third=aggiorna(info);
- printf("stampa first\n");
- stampa(&first);
- printf("stampa second\n");
- stampa(&second);
- copia_in_vect(records,first,second,third);
- leggi_da_file(uno,records);
- copia_cognomi(cognomi,records);
- printf("stampa vettore \n");
- stampa_vect(records);
- scrivi_file(due,records,num_rec);
- scrivi_file_cognomi(tre,cognomi,num_rec);
- fclose(uno);
- fclose(due);
- fclose(tre);
- free(records);
- clean(cognomi,num_rec);
- free(cognomi);
- free(third);
- return 0;
- }
- //puntatore a record non si usa il punto(.) benesì(->)
- void new_aggiorna(cittadino *first){
- printf("inserisci i dati del primo cittadino\n\n");
- printf("\ninserimento cognome\n");
- scanf("%s",first->cognome);
- printf("\ninsrimento nome\n");
- scanf("%s",first->nome);
- printf("\ninserimento luogo di nascita\n");
- scanf("%s",first->luogo);
- printf("\ninserimento anno di nascita\n");
- scanf("%d",&(first->anno));
- //soluzione del prof=("%s,%s,%s,%d",firts->cognome,first->nome,first->luogo,&first->anno)
- }
- cittadino aggiorna_second(cittadino pippo){
- cittadino f2={0};
- strcpy(f2.cognome,pippo.cognome);
- strcpy(f2.nome,pippo.nome);
- strcpy(f2.luogo,pippo.luogo);
- f2.anno=pippo.anno;
- return f2;
- }
- //soluzione del prof
- cittadino *aggiorna(char *data[]){
- cittadino *new;
- char risposta;
- printf("\nvuoi inserire un nuovo cittadino?\t si=[s],\tno=[n]\n");
- scanf("%s",&risposta);
- if(risposta=='n')
- return NULL;
- else{
- new=malloc(sizeof(cittadino));
- strcpy(new->cognome,data[0]);
- strcpy(new->nome,data[1]);
- printf("inserisci luogo e anno di nascita di michele nappi\n");
- scanf("%s %d",new->luogo,&new->anno);
- return new;
- }
- }
- void copia_in_vect(cittadino *copia, cittadino uno, cittadino due, cittadino *tre){
- copia[0]=uno;
- copia[1]=due;
- copia[2]=*tre;
- }
- void stampa(cittadino *a){
- printf("%s\n",a->cognome);
- printf("%s\n",a->nome);
- printf("%s\n",a->luogo);
- printf("%d\n",a->anno);
- }
- void stampa_vect(cittadino *a){
- int i;
- for(i=0;i<3;i++){
- printf("%s\n",a[i].cognome);
- printf("%s\n",a[i].nome);
- printf("%s\n",a[i].luogo);
- printf("%d\n",a[i].anno);
- }
- }
- void clean(char **a,int n){
- int i;
- for(i=0;i<n;i++){
- free(a[i]);
- }
- }
- void controllo_input(int n){
- if(n!=4){
- printf("il programma apre 3 file denominati uno,due e tre: il primo in lettura e gli alri in scrittura\n");
- exit(1);
- }
- }
- void controllo_file(FILE *file,char *stringa){
- if(file!=NULL){
- printf("%s è stato aperto correttamente\n",stringa);
- }else{
- exit(1);
- }
- }
- void leggi_da_file(FILE *in, cittadino *vect){
- if(fscanf(in,"%s %s %s %d",vect[3].cognome,vect[3].nome,vect[3].luogo,&vect[3].anno) !=EOF)
- printf("file letto\n");
- else
- printf("Il file è vuoto.");
- //fscanf(in,"%s %s %s %d",vect[3].cognome,vect[3].nome,vect[3].luogo,&vect[3].anno);
- //printf("%s %s %s %d",vect[3].cognome,vect[3].nome,vect[3].luogo,vect[3].anno);
- }
- void scrivi_file(FILE *out,cittadino *vect,int size){
- int i;
- for(i=0;i<size;i++){
- fprintf(out,"\t %s %s %s %d \n",vect[i].cognome,vect[i].nome,vect[i].luogo,vect[i].anno);
- }
- }
- void copia_cognomi(char **vect, cittadino *rec){
- vect[0]=calloc(strlen(rec[0].cognome),sizeof(char));
- strcpy(vect[0],rec[0].cognome);
- vect[1]=calloc(strlen(rec[1].cognome),sizeof(char));
- strcpy(vect[1],rec[1].cognome);
- vect[2]=calloc(strlen(rec[2].cognome),sizeof(char));
- strcpy(vect[2],rec[2].cognome);
- vect[3]=calloc(strlen(rec[3].cognome),sizeof(char));
- strcpy(vect[3],rec[3].cognome);
- }
- void scrivi_file_cognomi(FILE *out,char **vect,int size){
- int i;
- for(i=0;i<size;i++){
- fprintf(out,"\t %s \n",vect[i]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement