Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- int smim_prepsat(char *); // Funkce pro zjisteni, zda lze soubor prepsat - viz nize
- int main() {
- FILE *vstup, *vystup1, *vystup2;
- int znak;
- int poradi = 0;
- int poradi_znaku = 0;
- int radek = 1;
- int K, L;
- printf("Zadej K-te cislo\n");
- if (scanf("%d", &K) != 1) {
- printf("Musite zadat cislo\n");
- }
- printf("Zadej L-te cislo\n");
- if (scanf("%d", &L) != 1) {
- printf("Musite zadat cislo\n");
- }
- vstup = fopen("vstup.txt", "r"); // Otevreme zdrojovy soubor
- if (vstup == NULL) {
- printf("Nelze otevrit zdrojovy soubor\n");
- return 1;
- }
- if (!smim_prepsat("vystup1.txt")) { // Pokud nemuzeme prepsat cilovy soubor, ukoncime program
- printf("Nelze prepsat cilovy soubor\n");
- fclose(vstup); // Zavreme zdrojovy soubor!!!
- return 1;
- }
- if (!smim_prepsat("vystup2.txt")) { // Pokud nemuzeme prepsat soubor s patymi znaky, ukoncime program
- printf("Nelze prepsat soubor pro pate znaky\n");
- fclose(vstup); // Zavreme zdrojovy soubor!!!
- return 1;
- }
- vystup1 = fopen("vystup1.txt", "w"); // Otevreme cilovy soubor
- if (vystup1 == NULL) {
- printf("Nelze otevrit cilovy soubor\n");
- fclose(vstup); // Zavreme zdrojovy soubor!!!
- return 1;
- }
- vystup2 = fopen("vystup2.txt", "w"); // Otevreme soubor pro pate znaky
- if (vystup2 == NULL) {
- printf("Nelze otevrit soubor pro pate znaky\n");
- fclose(vystup1); // Zavreme cilovy soubor!!!
- fclose(vstup); // Zavreme zdrojovy soubor!!!
- return 1;
- }
- znak = fgetc(vstup); // Nacteme prvni znak.
- while (znak != EOF) { // Pokud se zadny znak nenacetl, ukoncime cyklus
- poradi++; // Zvysime poradi znaku o 1
- // Podle cisla radku zapiseme znak do licheho nebo sudeho souboru
- if ((poradi_znaku % 2 == 0) && (radek % K == 0)) {
- fputc(znak, vystup1);
- } else if ((poradi_znaku % 2 == 1) && (radek % L == 0)){
- fputc(znak, vystup2);
- }
- poradi_znaku++;
- // Pokud jsme narazili na konec radku, zvetsime cislo radku o 1
- if (znak == '\n') {
- radek++;
- }
- // Nacteme dalsi znak a opakujeme
- znak = fgetc(vstup);
- }
- fclose(vystup2); // Zavreme soubor s patymi znaky
- fclose(vystup1); // Zavreme cilovy soubor
- fclose(vstup); // Zavreme zdrojovy soubor
- return 0;
- }
- int smim_prepsat(char *nazev_souboru) {
- FILE *soubor;
- int volba;
- int tmp;
- soubor = fopen(nazev_souboru, "r"); // Zkusime otevrit soubor pro cteni
- if (soubor != NULL) { // Zjistime, jestli se soubor otevrel - to znamena ze existuje
- fclose(soubor); // Soubor hned zavreme, nechceme s nim nic delat
- printf("Soubor '%s' existuje, prepsat? [A/N] ", nazev_souboru);
- volba = getchar(); // Nacteme znak, ktery uzivatel zadal
- tmp = volba; // Vyprazdnime vstupni buffer - precteme vsechny znaky az do konce radku
- while (tmp != EOF && tmp != '\n' && tmp != '\r') {
- tmp = getchar();
- }
- return volba == 'A' || volba == 'a'; // Vratime TRUE pokud zadal 'A' nebo 'a', jinak FALSE.
- } else { // Kdyz se soubor neotevrel, pravdepodobne neexistuje
- return 1; // Vratime TRUE, neexistujici soubor muzeme prepsat
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement