Miten saada c++:ssa oma hakemistopolku

Millaisella funktiolla saa oman hakemistopolun käyttöön tarvittaessa? Pitäisi määritellä käyttöön oman hakemistopolun päästä muutama kansio, mutta oma hakemisto ei ole aina vakiopaikalla.
9926
Äänestä

Muut lukivat myös

Vastaukset 9

Vanhimmat

c ei ole tuollaisia juttuja. joudut käyttämään jotain käyttiskohtaista kirjastoa. ja mikä on oma hakemistopolku? tarkoitatko windowsissa jotain documents_and_settings/käyttäjänimi -juttua?

Äänestä
  • mutta siis jos haluan tehdä ohjelman jonka käyttäjä voi asentaan minne tahansa kiintolevylle ja ohjelma käyttää tiettyjä samalla asennettuja hakemistoja. Hakemistopolkua ohjelmaan ei voi siis määritellä koodissa kiinteäksi vaan tarvitaan jokin funktio jolla polku haetaan käsiteltäväksi ja vasta sen avulla saadaan selville missä ohjelman käyttämät hakemistot sijaitsevat.


    Esim.
    C:\diipadaapa\oma_ohjelma\

    sisältää:
    oma_ohjelma.exe
    tiedot1 hakemisto
    tiedot2 hakemisto

    Äänestä

getcwd-funktiolla. Tai jos haluat käyttää ympäristömuuttujaa, hae sen arvo getenv-funktiolla.

Äänestä
  • sitten käyttiskohtainen juttu. Tarkalleen ottaen se ei ole C :aa, vaan käyttiksen tarjoama palvelu jota voi käyttää C :ssa kyseisessä käyttiksessä.

    Äänestä

  • ... kirjoitti:

    sitten käyttiskohtainen juttu. Tarkalleen ottaen se ei ole C :aa, vaan käyttiksen tarjoama palvelu jota voi käyttää C :ssa kyseisessä käyttiksessä.

    Se menee api:n puolelle? Ohjelma tulisi ainoastaan win32 alustalle.

    Äänestä

  • Juuba kirjoitti:

    Se menee api:n puolelle? Ohjelma tulisi ainoastaan win32 alustalle.

    Sain getcwd:n toimimaan. Kiitän kaikkia vastauksista.

    Äänestä

Eli nyt pitäis siis saada listattua hakemistosta tiedot.
Ongelmana on merkkijono joka näyttäisi olevan toimiva mutta joka ei toimi.
Pelkästään CurrentPath:illa saa listattua nykyisen hakemiston tiedostot, mutta heti jos siihen merkkijonon perään liittää strcat:in avulla lisää tiedostopolkua olemassa olevaan hakemistoon, niin ohjelma ei sitä jostain syystä tajuakaan. Missä vois olla vika?

void GetCurrentPath(char* buffer)
{
   getcwd(buffer, _MAX_PATH);
   
}

int main(int argc, char* argv[])
{

   WIN32_FIND_DATA FindFileData;
   HANDLE hFind = INVALID_HANDLE_VALUE;
      
   char CurrentPath[MAX_PATH];
   GetCurrentPath(CurrentPath);

   char endpath[7];
      
   strcpy(endpath, "\\Diipadaapa\\*");

   strcat(CurrentPath, endpath);
   
   hFind = FindFirstFile(CurrentPath,
&FindFileData);

   if(hFind == INVALID_HANDLE_VALUE)
{
    cout

Äänestä
  • Se on sitten väärin tossa koodissa mutta char endpathin viimeinen muistipaikka omassa koodissa on viimeisen merkin jälkeinen tyhjä.

    Äänestä

  • Juuba kirjoitti:

    Se on sitten väärin tossa koodissa mutta char endpathin viimeinen muistipaikka omassa koodissa on viimeisen merkin jälkeinen tyhjä.

    Kannattaa näköjään laittaa aina välittömästi ongelmatilanteessa kysymys keskustelupalstalle. Ei mene kuin hetki kun vastauksen tajuaa itse.

    Äänestä

Kommentoi aloitusta


Juuba kirjoitti:

Millaisella funktiolla saa oman hakemistopolun käyttöön tarvittaessa? Pitäisi määritellä käyttöön oman hakemistopolun päästä muutama kansio, mutta oma hakemisto ei ole aina vakiopaikalla.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu