Advertisement
iGreenie

Untitled

Mar 16th, 2015
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.20 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int smim_prepsat(char *); // Funkce pro zjisteni, zda lze soubor prepsat - viz nize
  5.  
  6. int main() {
  7.  
  8. ​FILE *vstup, *vystup1, *vystup2;
  9. ​int znak;
  10. ​int poradi = 0;
  11. ​int poradi_znaku = 0;
  12. ​int radek = 1;
  13. ​int K, L;
  14.  
  15. ​printf("Zadej K-te cislo\n");
  16. if (scanf("%d", &K) != 1) {
  17. printf("Musite zadat cislo\n");
  18. }
  19.  
  20. ​printf("Zadej L-te cislo\n");
  21. ​if (scanf("%d", &L) != 1) {
  22. printf("Musite zadat cislo\n");
  23. }
  24.  
  25. ​vstup = fopen("vstup.txt", "r"); // Otevreme zdrojovy soubor
  26. ​if (vstup == NULL) {
  27. ​printf("Nelze otevrit zdrojovy soubor\n");
  28. ​return 1;
  29. ​}
  30.  
  31. ​if (!smim_prepsat("vystup1.txt")) { // Pokud nemuzeme prepsat cilovy soubor, ukoncime program
  32. ​printf("Nelze prepsat cilovy soubor\n");
  33. ​fclose(vstup); // Zavreme zdrojovy soubor!!!
  34. ​return 1;
  35. ​}
  36.  
  37. ​if (!smim_prepsat("vystup2.txt")) { // Pokud nemuzeme prepsat soubor s patymi znaky, ukoncime program
  38. ​printf("Nelze prepsat soubor pro pate znaky\n");
  39. ​fclose(vstup); // Zavreme zdrojovy soubor!!!
  40. ​return 1;
  41. ​}
  42.  
  43. ​vystup1 = fopen("vystup1.txt", "w"); // Otevreme cilovy soubor
  44. ​if (vystup1 == NULL) {
  45. ​printf("Nelze otevrit cilovy soubor\n");
  46. ​fclose(vstup); // Zavreme zdrojovy soubor!!!
  47. ​return 1;
  48. ​}
  49.  
  50. ​vystup2 = fopen("vystup2.txt", "w"); // Otevreme soubor pro pate znaky
  51. ​if (vystup2 == NULL) {
  52. ​printf("Nelze otevrit soubor pro pate znaky\n");
  53. ​fclose(vystup1); // Zavreme cilovy soubor!!!
  54. ​fclose(vstup); // Zavreme zdrojovy soubor!!!
  55. ​return 1;
  56. ​}
  57.  
  58. ​znak = fgetc(vstup); // Nacteme prvni znak.
  59. ​while (znak != EOF) { // Pokud se zadny znak nenacetl, ukoncime cyklus
  60. ​poradi++; // Zvysime poradi znaku o 1
  61.  
  62. ​// Podle cisla radku zapiseme znak do licheho nebo sudeho souboru
  63. ​if ((poradi_znaku % 2 == 0) && (radek % K == 0)) {
  64. ​fputc(znak, vystup1);
  65. ​} else if ((poradi_znaku % 2 == 1) && (radek % L == 0)){
  66. ​fputc(znak, vystup2);
  67. ​}
  68.  
  69. ​poradi_znaku++;
  70. ​// Pokud jsme narazili na konec radku, zvetsime cislo radku o 1
  71. ​if (znak == '\n') {
  72. ​radek++;
  73. ​}
  74.  
  75. ​// Nacteme dalsi znak a opakujeme
  76. ​znak = fgetc(vstup);
  77.  
  78. ​}
  79.  
  80. ​fclose(vystup2); // Zavreme soubor s patymi znaky
  81. ​fclose(vystup1); // Zavreme cilovy soubor
  82. ​fclose(vstup); // Zavreme zdrojovy soubor
  83.  
  84. ​return 0;
  85. }
  86.  
  87. int smim_prepsat(char *nazev_souboru) {
  88.  
  89. ​FILE *soubor;
  90. ​int volba;
  91. ​int tmp;
  92.  
  93. ​soubor = fopen(nazev_souboru, "r"); // Zkusime otevrit soubor pro cteni
  94. ​if (soubor != NULL) { // Zjistime, jestli se soubor otevrel - to znamena ze existuje
  95.  
  96. ​fclose(soubor); // Soubor hned zavreme, nechceme s nim nic delat
  97.  
  98. ​printf("Soubor '%s' existuje, prepsat? [A/N] ", nazev_souboru);
  99. ​volba = getchar(); // Nacteme znak, ktery uzivatel zadal
  100.  
  101. ​tmp = volba; // Vyprazdnime vstupni buffer - precteme vsechny znaky az do konce radku
  102. ​while (tmp != EOF && tmp != '\n' && tmp != '\r') {
  103. ​tmp = getchar();
  104. ​}
  105.  
  106. ​return volba == 'A' || volba == 'a'; // Vratime TRUE pokud zadal 'A' nebo 'a', jinak FALSE.
  107.  
  108. ​} else { // Kdyz se soubor neotevrel, pravdepodobne neexistuje
  109. ​return 1; // Vratime TRUE, neexistujici soubor muzeme prepsat
  110. ​}
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement