Advertisement
Guest User

Untitled

a guest
Dec 14th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.71 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct cittadino {
  6. int Sesso;
  7. char Cognome;
  8. char Nome;
  9. char Luogo;
  10. int Anno;
  11. } cittadino;
  12.  
  13.  
  14. void controllo_input (int);
  15. void controllo_file (FILE *, char *);
  16. cittadino *new_rec (char *);
  17. int conta_in_file (FILE *);
  18. void append_file (FILE *, cittadino *);
  19. void rewind (FILE *);
  20. void copia_da_file (FILE *, cittadino *);
  21. void scrivi_in_file_donna (FILE *, cittadino *, int);
  22.  
  23. int main (int argc, char *argv[])
  24. {
  25. char *info[]={"Verde", "Luisa", "Napoli"};
  26. cittadino *rec, *records;
  27. int num_rec;
  28. FILE *Citt, *Donne;
  29.  
  30. controllo_input (argc);
  31. Citt=fopen(argv[1], "r+");
  32. controllo_file (Citt, argv[1]);
  33. Donne=fopen(argv[2], "w");
  34. controllo_file (Donne, argv[2]);
  35. rec=new_rec(info);
  36. num_rec=conta_in_file(Citt);
  37.  
  38. if(rec)
  39. {
  40. num_rec++;
  41. append_file (Citt, rec);
  42. records=calloc(num_rec, sizeof(cittadino));
  43. }
  44. else
  45.  
  46. records=calloc(num_rec, sizeof(cittadino));
  47. rewind (Citt); //colloca il puntatore all'inizio del file
  48. copia_da_file (Citt, records); //trasferire tutti i record presenti in uno dentro array
  49. scrivi_in_file_donna (Donne, records, num_rec);
  50. fclose (Citt);
  51. fclose (Donne);
  52. free (records);
  53.  
  54. return 0;
  55. }
  56.  
  57. controllo_input (int argc)
  58. {
  59.  
  60. }
  61.  
  62.  
  63. controllo_file (FILE *x, char argv[])
  64. {
  65. }
  66.  
  67.  
  68. cittadino *new_rec (char *info[])
  69. {
  70. cittadino *new;
  71. char risposta;
  72. printf ("Inserire un utente ? s|n\n");
  73. scanf ("%s", &risposta);
  74.  
  75. if (risposta == 'n')
  76. {
  77. return NULL;
  78. }
  79.  
  80. else {
  81. new=malloc(sizeof(cittadino));
  82. stpcpy (new->Cognome, info[0]);
  83. stpcpy (new->Nome, info[1]);
  84. stpcpy (new->Luogo, info[2]);
  85. printf("Anno di nascita: ");
  86. scanf("%d", &new->Anno);
  87. printf("Inserisci il sesso: "),
  88. scanf("%d", &new->Sesso);
  89. return new;
  90. }
  91. }
  92.  
  93.  
  94. int conta_in_file (FILE *in)
  95. {
  96. int num=0;
  97. cittadino vect;
  98. while (fscanf(in, "%d %s %s %S %d", &vect.Sesso, vect.Cognome, vect.Nome, vect.Luogo, &vect.Anno) !=EOF)
  99. num++;
  100. return num;
  101. }
  102.  
  103.  
  104. void append_file (FILE *in, cittadino *rec)
  105. {
  106. fflush(in); //buffer (registro temporaneo), serve ad azzerare il buffer quando si usa scritt e lett
  107. fprintf (in, "%d %s %s %s %d\n", rec->Sesso, rec->Cognome, rec->Nome, rec->Luogo, rec->Anno);
  108. }
  109.  
  110.  
  111. void copia_da_file (FILE *in, cittadino *records)
  112. {
  113. int i=0;
  114. 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 ->
  115. i++;
  116. }
  117.  
  118.  
  119. void scrivi_in_file_donna (FILE *out, cittadino *records, int num_rec)
  120. {
  121. int i;
  122. for (i=0; i<=num_rec; i++)
  123. if (records[i].Sesso == 1)
  124. (fprintf (out, "%d %s %s %s %d", records[i].Sesso, records[i].Cognome, records[i].Nome, records[i].Luogo, records[i].Anno));
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement