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);
Другие вопросы по тегам