Pereiti prie turinio

Visų failų nuskaitymas kurie yra aplankale


Rekomenduojami pranešimai

Sveiki,

Reikia nuskaityti visus tekstinius failus, kurie kiekvienas yra atskirame aplankale ir nežinoma kiek tų aplankalų yra. Kaip ir kokia funkcija naudoti juos visus nuskaityti ir atlikus veiksmus į juos vėl įrašyti ? Esu savamokslis tai labai aukštom frazėm nekalbėkit ;D

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 2 savaičių...

Esu ne iš tų, kurie negūgline puola rašyti forumuose, tiesiog neradau, konkrečiai ko man reikia, todėl rašau čia :rolleyes:

Turiu tokia mini prgramėlę ir klausimą. :)

#include <dirent.h> 
#include <iostream>
#include <fstream> 

using namespace std;

int main () 
{
   DIR *dir = NULL; 
   dir = opendir ("duomenys");
   struct dirent *pent=NULL ;

   while (pent = readdir (dir))  {
       cout << pent->d_name << endl;
       // Kaip failų pavadinimus sudėti į masyvą ir po to visus nuskaityi. 
       // Galvoju kažką pan f.open("duomenys/pent->d_name") aišku taip neina ;D 
   }

   closedir (dir);
   cin.get (); 
   return EXIT_SUCCESS; 
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Esu ne iš tų, kurie negūgline puola rašyti forumuose, tiesiog neradau, konkrečiai ko man reikia, todėl rašau čia :rolleyes:

Turiu tokia mini prgramėlę ir klausimą. :)

<...>

 

#include <dirent.h> 
#include <iostream>
#include <fstream> 
#include <string>

using namespace std;

int main () 
{
   DIR *dir = NULL; 
   dir = opendir ("duomenys");
   struct dirent *pent=NULL ;

   string s[100];  //masyvas su failų pavasinimais
   int n = 0;      //masyvo ilgis

   while (pent = readdir (dir))  {
       cout << pent->d_name << endl;
       s[n++] = pent->d_name;
   }

   closedir (dir);
   cin.get (); 
   return EXIT_SUCCESS; 
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Esu ne iš tų, kurie negūgline puola rašyti forumuose, tiesiog neradau, konkrečiai ko man reikia, todėl rašau čia :rolleyes:

 

Taip ir lieku nesuprates ko tu ieskojai, jeigu temos pirmam poste klausei kokia funkcija naudot, o paskui papostini jau panaudota ja? Ir KAIP galima nerast atsakymu i tokius elementarius klausimus kaip "kokia funkcija atlieka tokia operacija", kai as atsakymus randu i sudetingiausius programavimo klausimus, kur net tikslu klausima kartais sunku suformuluot...

 

Mano pataisymai kodo komentaruose:

 

#include <dirent.h> 
#include <iostream>
#include <fstream> 
#include <string>

using namespace std;

int main () 
{
   DIR *dir = NULL; 
   dir = opendir ("duomenys");
   struct dirent *pent=NULL;

   vector<string> vDirNames;  // jei jau savamokslis, tai mokomes teisingai. statiniai masyvai naudojami tik 
                              // tada, kai reikalingas kiekis duomenu yra zinomas is anksto, ir nera didelis.

   while (pent = readdir (dir))  {
       cout << pent->d_name << endl;
       vDirNames.push_back(pent->d_name);
   }

   closedir (dir);
   cin.get (); 
   return EXIT_SUCCESS; 
}

 

o kad gauti visus folderius su visais failais - teks skanuot rekursinej funkcijoj.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Taip ir lieku nesuprates ko tu ieskojai, jeigu temos pirmam poste klausei kokia funkcija naudot, o paskui papostini jau panaudota ja?

Taigi auksčiau parašė kad reikia naudoti dirent.h biblioteką, todėl funkciją jau pats radau. :blink:

 

Ir KAIP galima nerast atsakymu i tokius elementarius klausimus kaip "kokia funkcija atlieka tokia operacija", kai as atsakymus randu i sudetingiausius programavimo klausimus, kur net tikslu klausima kartais sunku suformuluot...

Šaunu, kad viską randi. Bet kam taip piktai, tiesiog paklausiau. Aišku aš jus suprantu, kaip forume užduodami patys elementariausi klausimai, tai turbūt atsibosta atsakinėt. ;)

 

 

Ir paskutinis mano paprastas klausimas. Kaip iš masyvo paimti failo pavadinimą ir tą failą atidaryti?

#include <dirent.h> 
#include <iostream>
#include <fstream> 
#include <string>

using namespace std;

int main () 
{
   DIR *dir = NULL; 
   dir = opendir ("duomenys");
   struct dirent *pent=NULL ;


   string s[100];  //masyvas su failų pavasinimais
   int n = 0;      //masyvo ilgis
//    ifstream f;
   while (pent = readdir (dir))  {
       cout << pent->d_name << endl;
       s[n++] = pent->d_name;
       // f.open(s[n]); ?
   }

   closedir (dir);
   cin.get (); 
   return EXIT_SUCCESS; 
}

Pasirinkau wi_lius varaintą, nes dar vektoriais nesimokinau :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Taigi auksčiau parašė kad reikia naudoti dirent.h biblioteką, todėl funkciją jau pats radau. :blink:

 

 

Šaunu, kad viską randi. Bet kam taip piktai, tiesiog paklausiau. Aišku aš jus suprantu, kaip forume užduodami patys elementariausi klausimai, tai turbūt atsibosta atsakinėt. ;)

 

 

Ir paskutinis mano paprastas klausimas. Kaip iš masyvo paimti failo pavadinimą ir tą failą atidaryti?

#include <dirent.h> 
#include <iostream>
#include <fstream> 
#include <string>

using namespace std;

int main () 
{
   DIR *dir = NULL; 
   dir = opendir ("duomenys");
   struct dirent *pent=NULL ;


   string s[100];  //masyvas su failų pavasinimais
   int n = 0;      //masyvo ilgis
//    ifstream f;
   while (pent = readdir (dir))  {
       cout << pent->d_name << endl;
       s[n++] = pent->d_name;
       // f.open(s[n]); ?
   }

   closedir (dir);
   cin.get (); 
   return EXIT_SUCCESS; 
}

Pasirinkau wi_lius varaintą, nes dar vektoriais nesimokinau :)

Nu tai jo, lyg ir tavo užkomentuotas variantas tiktų, ką, neveikia? Tik po to gal ir .close() reiktų, padarius ką nori.

 

Arba išvis gali į masyvą nedėti, jei tau nereiks jų antrąkart, o iškart f.open(pent->d_name) :)

Redagavo Silke
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nu tai jo, lyg ir tavo užkomentuotas variantas tiktų, ką, neveikia? Tik po to gal ir .close() reiktų, padarius ką nori.

 

Arba išvis gali į masyvą nedėti, jei tau nereiks jų antrąkart, o iškart f.open(pent->d_name) :)

Neveikia arba kažką netaip darau. Elementari programėlė, kuri turėtų visus programos aplankale esancius failus atidaryti, nuskaityti skaičių ir jį įrašyti į rez failą. Bet įrašo tik nulius. :angry: Nesuprantu kame problemos ;)

#include <fstream> 
#include <dirent.h> 
#include <iostream> 

using namespace std;

int main () 
{
   DIR *pdir = NULL; 
   pdir = opendir ("."); 
   struct dirent *pent = NULL;
   int sk=0;
   ifstream f;
   ofstream rez;

   rez.open("duomenys/rez.txt");

   while (pent = readdir (pdir)) 
   {   f.open(pent->d_name);
       f >> sk;       
       rez << sk << endl;
       f.close();
   }
   rez.close();
   closedir (pdir);
   return EXIT_SUCCESS; 
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Neveikia arba kažką netaip darau. Elementari programėlė, kuri turėtų visus programos aplankale esancius failus atidaryti, nuskaityti skaičių ir jį įrašyti į rez failą. Bet įrašo tik nulius. :angry: Nesuprantu kame problemos ;)

Hmh, manau debuggerį pasiimk ir žiūrėkis... :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...