Jak ze sieżki do pliku wyjąć nazwę tego pliku?
Sorry jeśli już kiedyś było takie pytanie ale nie znalazłem takiego więc się pytam.
Jak ze sieżki do pliku wyjąć nazwę tego pliku?
Sorry jeśli już kiedyś było takie pytanie ale nie znalazłem takiego więc się pytam.
Może najpierw powiesz w czym piszesz?
Jeżeli w Builder to
AnsiString ExtractFileName(AnsiString)
Jeżeli Winapi to
short GetFileTitle(LPCSTR, LPTSTR, WORD);
Jeżeli czysty C++ to sam musisz sobie napisać(chyba).
generalnie jak sciezka jest w postaci stringa, to nazwa pliku jest top co jest po ostatnim znaczku '/' wystarczy wiec podzielic string po tych znaczkach, albo czytac od konca do pierwszego...
moja propozycja:
void getfilename(char * cel, char *dir){
char *ptr;
ptr = strrchr(dir,'\');
strcpy(cel,ptr+1);
}
// a jak będzie c:\dir\subdir\plik.exe, albo c:plik.exe to sie po prostu wykrzaczy. [mf]
char* getfilename(char* path){
int i=strlen(path);
while(i--)if((path[i]=='\')||(path[i]==':'))break;
return &path[++i];
}
//...
char* s=(char*)malloc(MAX_PATH);
GetModuleFileName(0,s,MAX_PATH);
char* plik=strdup(getfilename(s));
free(s);
//...
free(plik);
// działa i dla c:plik.exe i dla c:\1\2\3\plik.exe i dla samego plik.exe