Advertisement
neogz

FIL - Manipulacija fajlovima - Vježba 10 funkcija

Aug 30th, 2014
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.63 KB | None | 0 0
  1. /*
  2. maniplulisanje file-ovima
  3. */
  4. #ifdef _MSC_VER
  5. #define _CRT_SECURE_NO_WARNINGS
  6. #endif
  7.  
  8. #include <iostream>
  9. #include <fstream> 
  10. using namespace std;
  11.  
  12. char crt[] = "\n--------------------------------------------------\n";
  13.  
  14. int brMjesta()
  15. {
  16.     std::system("cls");
  17.     int temp = 0;
  18.     cout << "Za koliko mjesta zelite pomjeriti pokazivac: ";
  19.     cin >> temp;
  20.     return temp;
  21. }
  22. char * unosteksta()
  23. {
  24.     system("cls");
  25.     char tempunos[10000];
  26.  
  27.     cout << crt << "Unesite tekst: (# - za kraj unosa)" << crt;
  28.     cin.ignore();
  29.     cin.getline(tempunos, 10000, '#');
  30.  
  31.     char * tekst = new char[strlen((tempunos)+1)];
  32.  
  33.     strcpy(tekst, tempunos);
  34.     return tekst;
  35. }
  36. char * imeFajla()
  37. {
  38.     std::system("cls");
  39.     char tempnaziv[100];
  40.     cout << crt << "Unesite naziv file-a: " << endl;
  41.     cin >> tempnaziv;
  42.     strcat(tempnaziv, ".txt");
  43.  
  44.     char * ime = new char[strlen(tempnaziv) + 1];
  45.     strcpy(ime, tempnaziv);
  46.     std::system("cls");
  47.     return ime;
  48. }
  49. void pauza()
  50. {
  51.     cout << "Pritisnite ENTER za nastavak: ";
  52.     char tipka;
  53.     cin.get(tipka);
  54.     cin.ignore(10000, '\n');
  55. }
  56. // *******************************
  57. void meni()
  58. {
  59.     cout << crt << "-----------------   :: MENI ::   -----------------" << crt;
  60.     cout << "\t1. Upisi sadrzaj u fajl: \n\t2. Prikazi sadrzaj fajla: \n\t3. Dodaj novi sadrzaj u fajl: \n\t4. Kopiraj fajl u drugi fajl: \n\t5. Pretrazi sadrzaj fajla - karakter:\n";
  61.     cout << "\t6. Pretrazi sadrzaj fajla: \n\t7. Prikazi velicinu fajla:  \n\t8. Izbrisi sadrzaj fajla:    \n\t9. Rad sa novim fajlom:     \n\t10. Izadji iz programa: " << crt;
  62. }
  63. void upisiSadrzaj(ofstream & upis)
  64. {
  65.     system("cls");
  66.     if (upis.fail()) cout << "GRESKA!!!!\n";
  67.     else
  68.     {
  69.         upis << unosteksta();
  70.     }
  71. }
  72. void prikaziSadrzaj(ifstream & ispis)
  73. {
  74.     system("cls");
  75.     if (ispis.fail())cout << "GRESKA!!!!\n";
  76.     else
  77.     {
  78.         cout << crt << "Vas file izgleda ovako: " << crt;
  79.         char znak;
  80.         while (ispis.get(znak))
  81.             cout << znak;
  82.  
  83.         cout << crt;
  84.     }
  85.     pauza();
  86. }
  87. char * dohvatiSadrzaj(ifstream & ispis)
  88. {
  89.     char tempNiz[10000];
  90.     int brojac = 0;
  91.     if (!ispis.fail())
  92.     {
  93.         char znak;
  94.         for (int i = 0; ispis.get(znak); i++)
  95.         {
  96.             tempNiz[i] = znak;
  97.             brojac++;
  98.         }
  99.         tempNiz[brojac] = '\0';
  100.     }
  101.  
  102.     char * sadrzaj = new char[brojac];
  103.     strcpy(sadrzaj, tempNiz);
  104.  
  105.     return sadrzaj;
  106. }
  107. void kopirajFajl(char * ime)
  108. {
  109.  
  110.     char * ime2 = imeFajla();
  111.     ofstream upis(ime2);
  112.     /*
  113.     if (!upis.fail())
  114.     {
  115.     char * sadrzaj = dohvatiSadrzaj(ispis);
  116.     upis << sadrzaj;
  117.     }
  118.     upis.close();*/
  119.  
  120.     ifstream f1(ime, fstream::binary);
  121.     ofstream f2(ime2, fstream::trunc | fstream::binary);
  122.     f2 << f1.rdbuf();
  123. }
  124. char * pretragaRijec(ifstream & ispis)
  125. {
  126.     char rijec[15];
  127.     cout << "Unesite rijec za pretragu (max. 15 karaktera): ";
  128.     cin >> rijec;
  129.  
  130.     char * sadrzaj = dohvatiSadrzaj(ispis);
  131.     char * pronadjeno = strstr(sadrzaj, rijec);
  132.     return pronadjeno;
  133. }
  134. void pretragaKarakter(ifstream & ispis)
  135. {  
  136.     std::system("cls");
  137.     char znak, tempZnak;
  138.     int brojacZnakova = 0, brojacUkupno = 0;
  139.     cout << crt << "Unesite znak, za koji zelite saznati statistiku: ";
  140.     cin.ignore();
  141.     cin.get(znak);
  142.     cin.ignore();
  143.     cout << crt;
  144.  
  145.     while (ispis.get(tempZnak))
  146.     {
  147.         brojacUkupno++;
  148.         if (znak == tempZnak) brojacZnakova++;
  149.     }
  150.     std::system("cls");
  151.     cout << "U tekstu se nalazi: " << brojacUkupno << " znakova.\n";
  152.     cout << "Trazeni znak -> " << znak << " <- se u tekstu nalazi: " << brojacZnakova << " puta!" << crt;
  153.     pauza();
  154. }
  155. void izbrisiFajl(ifstream & ulaz, char * ime)
  156. {  
  157.     cout << crt;
  158.     if (remove(ime) != 0)
  159.         perror("Greska pri brisanju file-a!");
  160.     else
  161.         puts("File uspjesno obrisan!");
  162.     cout << crt;
  163.  
  164.     pauza();
  165. }
  166. int main(){
  167.     char * ime = imeFajla();
  168.     int izbor;
  169.     do  {
  170.         meni();
  171.         cout << "Izaberi radnju: ";
  172.         cin >> izbor;
  173.  
  174.         switch (izbor){
  175.         case 1:{   
  176.                    ofstream upis(ime);
  177.                     upisiSadrzaj(upis);
  178.                     upis.close();
  179.                     system("cls");
  180.                     break;
  181.                 }
  182.  
  183.         case 2: {  
  184.                     ifstream ispis(ime);   
  185.                     prikaziSadrzaj(ispis);         
  186.                     ispis.close();
  187.                     break;
  188.                 }
  189.         case 3: {  
  190.                     ofstream upis(ime, ios::app);  
  191.                     upisiSadrzaj(upis);    
  192.                     upis.close();  
  193.                     break;
  194.                 }
  195.  
  196.         case 4: {  
  197.                     ifstream ispis(ime);   
  198.                     kopirajFajl(ime);              
  199.                     ispis.close();  
  200.                     break; 
  201.                 }
  202.  
  203.         case 5: {  
  204.                     ifstream ispis(ime);   
  205.                     pretragaKarakter(ispis);       
  206.                     ispis.close();  
  207.                     break;
  208.                 }
  209.  
  210.         case 6: {  
  211.                     ifstream ispis(ime);
  212.                     char * pronadjeno = pretragaRijec(ispis);
  213.                     if (pronadjeno == NULL) cout << "Nije pronadjena trazena rijec!" << endl;
  214.                     else cout << crt << "Trazena rijec je pronadjena u narednom dijelu teksta: " << crt << pronadjeno << crt;
  215.                     pauza();
  216.                     ispis.close();  
  217.                     break;
  218.                 }
  219.  
  220.         case 7: {   std::system("cls"); ifstream upis( ime, ios::binary | ios::ate);
  221.                     cout << crt<<"Velicina file-a je: "<<  upis.tellg() <<crt; 
  222.                     pauza();
  223.                     break;
  224.                 }
  225.  
  226.         case 8: {  
  227.                     std::system("cls"); ofstream upis(ime, ios::trunc);
  228.                     upis.close();
  229.                     cout << crt << "Sadrzaj uspjesno izbrisan!" << crt;
  230.                     pauza();   
  231.                     break;
  232.                 }
  233.         case 9: {   std::system("cls");
  234.                     cout << crt << "Izaberite ime novog file-a: " << endl; 
  235.                     ime = imeFajla();
  236.                     std::system("cls");
  237.                     cout << crt << "Uspjesno ste izabrali novi file!" << crt;  
  238.                     pauza();
  239.                     break;
  240.                 }
  241.  
  242.         case 10:{   std::system("cls");
  243.                     cout << crt << "Izlazim iz programa. \nHvala na koristenju. :*" << crt;
  244.                     pauza();
  245.                     break;  
  246.                 }
  247.  
  248.         default: {  std::system("cls");  
  249.                     cout << crt << "Niste unijeli valjanu opciju.\nPokusajte ponovo." << crt;
  250.                     pauza();
  251.                     break; }
  252.                 }
  253.  
  254.         std::system("cls");
  255.     } while (izbor != 10);
  256.  
  257.     std::system("pause>null");
  258.     return 0;
  259. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement