Advertisement
Perlamado

Untitled

Apr 4th, 2020
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.55 KB | None | 0 0
  1. // esame 27 06 2016
  2. // file 270616.txt
  3.  
  4.  
  5. # include <stdio.h>
  6. #include <stdlib.h>
  7. #include <string.h>
  8. #include <math.h>
  9.  
  10. struct dati{
  11. int anno;
  12. int mese;
  13. int mittente;
  14. char nomiM[31];
  15. int destinatario;
  16. char nomiD[31];
  17. char localita[31];
  18. };
  19.  
  20. struct dati *letturaFile(FILE*f,int *n);
  21. void stampaDati(struct dati *d,int n);
  22.  
  23. int main(int argc,char *argv[]){
  24. int n;
  25. struct dati *dati;
  26. FILE *f;
  27. if(argc!=2){
  28. printf("paramentri inseriti errati\n");
  29. return 1;
  30. }
  31. f=fopen(argv[1],"r");
  32. if(f==NULL){
  33. printf("file non trovato \n");
  34. return 1;
  35. }
  36. // stampa e lettura struct
  37. dati=letturaFile(f,&n);
  38. fclose(f);
  39. stampaDati(dati,n);
  40. return 0;
  41. }
  42. struct dati *letturaFile(FILE*f,int *n){
  43. int nConv;
  44. int size=10;
  45. char buffer[100];
  46. struct dati *d1,*d2;
  47. *n=0;
  48.  
  49. d2=malloc(size*sizeof(struct dati));
  50.  
  51. while(fgets(buffer,sizeof(buffer),f)){
  52. d1=d2+ *n;
  53. nConv=sscanf(buffer,"%d %d %s %s %s",&d1->anno,&d1->mese,d1->nomiM,d1->nomiD,d1->localita);
  54. if(strcmp(d1->nomiM,"Gino")==0){
  55. d1->mittente=0;
  56. }
  57. if(strcmp(d1->nomiM,"Tino")==0){
  58. d1->mittente=1;
  59. }
  60. if(strcmp(d1->nomiM,"Toni")==0){
  61. d1->mittente=2;
  62. }
  63. if(strcmp(d1->nomiM,"Luigi")==0){
  64. d1->mittente=3;
  65. }
  66. if(strcmp(d1->nomiM,"Mario")==0){
  67. d1->mittente=4;
  68. }
  69. if(strcmp(d1->nomiM,"Ugo")==0){
  70. d1->mittente=5;
  71. }
  72. if(strcmp(d1->nomiD,"Gino")==0){
  73. d1->destinatario=0;
  74. }
  75. if(strcmp(d1->nomiD,"Tino")==0){
  76. d1->destinatario=1;
  77. }
  78. if(strcmp(d1->nomiD,"Toni")==0){
  79. d1->destinatario=2;
  80. }
  81. if(strcmp(d1->nomiD,"Luigi")==0){
  82. d1->destinatario=3;
  83. }
  84. if(strcmp(d1->nomiD,"Mario")==0){
  85. d1->destinatario=4;
  86. }
  87. if(strcmp(d1->nomiD,"Ugo")==0){
  88. d1->destinatario=5;
  89. }
  90. (*n)++;
  91. if(*n>size){
  92. size=size*2;
  93. d2=realloc(d2,size*sizeof(struct dati));
  94. }
  95. }
  96. d2=realloc(d2,*n*sizeof(struct dati));
  97. return d2;
  98. }
  99. void stampaDati(struct dati *d,int n){
  100. int i;
  101. for(i=0;i<n;i++){
  102. printf("%d %d %s %d %s %d %s\n",d[i].anno,d[i].mese,d[i].nomiM,d[i].mittente,d[i].nomiD,d[i].destinatario,d[i].localita);
  103. }
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement