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.
Miten saada c++:ssa oma hakemistopolku
Juuba
9926
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
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?
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
getcwd-funktiolla. Tai jos haluat käyttää ympäristömuuttujaa, hae sen arvo getenv-funktiolla.
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.
Sain getcwd:n toimimaan. Kiitän kaikkia vastauksista.
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
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.