Advertisement
mino2580

task1_csv

Apr 19th, 2019
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.07 KB | None | 0 0
  1.  
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5. int main()
  6. {
  7. FILE * p_soubor_2 = fopen("output.csv", "w");
  8. if (p_soubor_2 == NULL)
  9. {
  10. printf("Soubor se nepodařilo otevřít pro zápis, zkontrolujte prosím oprávnění.");
  11. return 1;
  12. }
  13.  
  14. int vek = 20;
  15. int vyska = 150, vaha = 50;
  16. char jmeno[256];
  17. int status;
  18. char retezec[256];
  19. char nejmladsi[256];
  20. char nejstarsi[256];
  21. int soucet_veku=0,soucet_vysky=0,soucet_vahy=0;
  22. int pocet_radku=0;
  23. int min_vek=0,max_vek=0;
  24. //puts dava novy radek bez\n
  25. // puts("Zadej CSV radky ve formatu jmeno;vek;vyska;vaha;");
  26. // puts("Konec=EOF neboli na klavesnici CTRL+Z...");
  27. //fscanf nacita ze souboru,to same scanf nacita s klavesnice
  28. FILE * p_soubor = fopen("input.csv", "r");//otevreni datoveho proudu
  29. if (p_soubor == NULL)
  30. {
  31. printf("Soubor se nepodařilo otevřít pro čtení, zkontrolujte prosím zda existuje.");
  32. return 1;
  33. }
  34.  
  35.  
  36. //fgets nacitani jedneho radku,ze souboru do retezca
  37. while (fgets(retezec, sizeof(retezec), p_soubor) != NULL)
  38. {
  39. //printf("%s ",retezec);
  40. // printf("%s;%lf;%d;%d;\n", jmeno, &vek, &vyska, &vaha);
  41. //rozfazovani do scanf
  42. //sscanf nacita retezce bufera,scanf nacita s klavesnice
  43. //vstup se bere retezece,s tama se to ma brat
  44. status = sscanf(retezec, "%[^;];%d;%d;%d;", jmeno, &vek, &vyska, &vaha);
  45. //sscanf
  46. // printf("Status=%d, jmeno=%s, vek=%.2f, vyska=%d a vaha=%d\n", status, jmeno, vek, vyska, vaha);
  47. if (status<4)//eof nemuze nastat
  48. {
  49. printf("Chyba! Cekal jsem cislo, ne: %s\n", retezec);
  50. }
  51. else
  52. {
  53. if(pocet_radku==0)
  54. {
  55. max_vek=vek;
  56. min_vek=vek;
  57. }
  58.  
  59. if(vek>max_vek)
  60. {
  61. max_vek=vek;
  62. strcpy(nejstarsi,jmeno);//kopirovani textoveho pole do pole jmeno
  63. }
  64.  
  65. if(vek<min_vek)
  66. {
  67. strcpy(nejmladsi,jmeno);
  68. min_vek=vek;
  69. }
  70.  
  71. soucet_veku+=vek;
  72. soucet_vysky+=vyska;
  73. soucet_vahy+=vaha;
  74. pocet_radku++;
  75. }
  76.  
  77. }
  78. printf("Prumerna vaha je: %d kg\n",soucet_vahy/pocet_radku);
  79. fprintf(p_soubor_2, "Prumerna vaha je: %d kg\n",soucet_vahy/pocet_radku );
  80.  
  81. printf("Prumerna vyska je: %d cm\n",soucet_vysky/pocet_radku);
  82. fprintf(p_soubor_2,"Prumerna vyska je: %d cm\n",soucet_veku/pocet_radku);
  83.  
  84. printf("Prumerny vek je: %d\n",soucet_veku/pocet_radku);
  85. fprintf(p_soubor_2,"Prumerny vek je: %d\n",soucet_veku/pocet_radku);
  86.  
  87. printf("Nejmladsim je %s s vekem %d\n",nejmladsi,min_vek);
  88. fprintf(p_soubor_2,"Nejmladsim je %s s vekem %d\n",nejmladsi,min_vek);
  89.  
  90. printf("Nejstarsim je %s s vekem %d\n",nejstarsi,max_vek);
  91. fprintf(p_soubor_2,"Nejstarsim je %s s vekem %d\n",nejstarsi,max_vek);
  92.  
  93. if (fclose(p_soubor) == EOF) //podminka ukonceni,zavreni suboru
  94. {
  95. printf("Soubor se nepodařilo uzavřít.");
  96. return 1;
  97. }
  98.  
  99.  
  100. //fprintf(p_soubor_2,retezec);
  101.  
  102. if (fclose(p_soubor_2) == EOF)
  103. {
  104. printf("Soubor se nepodařilo uzavřít.");
  105. return 1;
  106. }
  107.  
  108. return 0;
  109.  
  110.  
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement