C语言编程getcwd变量操作

C语言编程getcwd变量操作,c,io,directory,getcwd,C,Io,Directory,Getcwd,基本上我需要一个if语句,它的响应依赖于当前的工作目录 我对这个主题做了一些研究,我相信getcwd()函数就是我想要的,但是我不知道如何在if语句中与它进行接口 我是C新手,我正在制作的程序需要位于桌面上(顺便说一句,它是UNIX系统)才能正常运行,if语句需要确定它是否位于所述桌面上。您需要先将CWD存储在字符串中: char *cwd; cwd = getcwd(NULL, 0); if(cwd == NULL) { // error return -1; } if(st

基本上我需要一个if语句,它的响应依赖于当前的工作目录

我对这个主题做了一些研究,我相信
getcwd()
函数就是我想要的,但是我不知道如何在if语句中与它进行接口


我是C新手,我正在制作的程序需要位于桌面上(顺便说一句,它是UNIX系统)才能正常运行,if语句需要确定它是否位于所述桌面上。

您需要先将CWD存储在字符串中:

char *cwd;
cwd = getcwd(NULL, 0);
if(cwd == NULL) { 
    // error
    return -1;
}
if(strcmp("/whatever", cwd) == 0) {
    // same folder
}
free(cwd);

下面的代码怎么样?我在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;
}   
#包括
#包括
#包括
内部主(空){
char*cwd;
字符buff[路径_MAX+1];
cwd=getcwd(buff,路径_MAX+1);
如果(cwd!=NULL){
printf(“我的工作目录是%s.\n”,cwd);
如果(strcmp(“/home/razib/Desktop”,cwd)=0){
printf(“我现在在桌面上\n”);
}
}
返回退出成功;
}   
这里您必须提供
getcwd()
方法a
buff[]
buff[]
可以用size
PATH\u MAX+1
声明<代码>路径_MAX可在
限制处找到。h

希望对您有所帮助。

非常感谢。

该代码将导致未定义的行为。为您分配字符串的实现需要您为第一个参数传入
NULL
。还要注意的是,并不是所有的实现都会分配内存,它不是标准化的。多亏了Razib,这看起来工作得很顺利