C программирование getcwd манипулирование переменными
В основном мне нужно выражение if, ответ на который зависит от текущего рабочего каталога.
Я провел некоторое исследование по этой теме, и я считаю, что getcwd()
Функция - это то, что я ищу, но я не могу понять, как взаимодействовать с ней в операторе if.
Я новичок в C, и программа, которую я делаю, должна быть расположена на рабочем столе (между прочим, это система UNIX), чтобы она работала правильно, и инструкция if должна определить, находится ли она на указанном рабочем столе или нет.
2 ответа
Как насчет следующего кода, он работает для меня ubuntu
-
#include <stdlib.h>
#include <unistd.h>
#include <limits.h>
int main( void ){
char* cwd;
char buff[PATH_MAX + 1];
cwd = getcwd( buff, PATH_MAX + 1 );
if( cwd != NULL ) {
printf( "My working directory is %s.\n", cwd );
if(strcmp("/home/razib/Desktop", cwd) == 0) {
printf("I'm in Desktop now\n");
}
}
return EXIT_SUCCESS;
}
Здесь вы должны предоставить getcwd()
метод а buff[]
, buff[]
может быть объявлен с размером PATH_MAX+1
, PATH_MAX
можно найти на limits.h
,
Надеюсь, это поможет вам.
Большое спасибо.
Сначала вам нужно будет сохранить CWD в строке:
char *cwd;
cwd = getcwd(NULL, 0);
if(cwd == NULL) {
// error
return -1;
}
if(strcmp("/whatever", cwd) == 0) {
// same folder
}
free(cwd);