Das sollte funktionieren (ist aber nicht ansi):
Code:
#include <unistd.h>
char path[PATH_MAX] = {0};
getcwd(path,PATH_MAX);
Eventuell kannst dir aber ein Funktion wie diese schreiben:
Code:
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <limits.h>
#include <stdio.h>
#ifndef PATH_MAX
# define PATH_MAX 256
#endif
char * get_cwd() {
size_t size = PATH_MAX;
char * path = NULL;
for(;;) {
path = malloc(size);
if(path == NULL) {
break;
}
if(getcwd(path,size) == NULL) {
free(path);
path = NULL;
if(errno == ERANGE) {
size *= 2;
}
else {
break;
}
}
else {
break;
}
}
return path;
}
int main() {
char * cwd = get_cwd();
puts(cwd);
/* free()-en nicht vergessen! */
free(cwd);
return 0;
}
Kopier das in eine Datei mit den Namen getcwd.c und es kompeliert mit:
Code:
gcc -Wall -pedantic -ansi -O2 -g getcwd.c -o getcwd
Lesezeichen