string operations - path
-
hi,
wie bekomme ich von einem File, Ordner den prev Folder?
also zb.: "\tmp\foo\test.txt" prev folder = "\tmp\foo"
oder "\tmp\foo\foo2" prev folder = "\tmp\foo"
oder "\tmp\test1.txt" prev folder = "\tmp"
oder "\g\h\w\c" prev folder = "\g\h\w"mit strrchr bekomme ich einen pointer auf das letzte zeichen.... wie bekomme ich dann prev dir?
-
Hi !
#include <stdio.h> int main() { char path[] = "/g/h/w/c"; char* p = strrchr( path, '/' ); path[ p-path ] = '\0'; printf( "Prev Folder: %s\n", path ); return 1; }
-
gar nicht so schlecht der trick! was ist wenn path auch ein pointer ist?
-
Solange es kein Pointer auf ein String-Literal ist, klappt das genauso wie da oben beschrieben. Nur bei String-Literalen mußt du etwas anders vorgehen (dort darfst du nicht einfach ein \0 reinpinseln) und z.B. den vorderen Teil per strncpy() in einen neuen Datenbereich kopieren (oder du übergibst printf() die Länge des String
printf("%*s",path,p-path);
).
-
unter windoze gibts auch noch: http://msdn2.microsoft.com/en-us/library/e737s6tf(VS.80).aspx
-
mit
char path[] = "/foo";
geht dein snipplet nicht prevdir sollte ja "/" sein!!!
cu
-
String schrieb:
mit
char path[] = "/foo";
geht dein snipplet nicht prevdir sollte ja "/" sein!!!
cu
Wenn du auch noch den Root "ermitteln" willst, kannst du ja das snippet um die Zeile
if ( p == path && strlen(path) > 1 ) path[1] = '\0';
ergänzen und als else-Zweig anhängen.
Gruß, p.