【问题标题】:C programming getcwd variable manipulation [duplicate]C编程getcwd变量操作
【发布时间】:2015-05-08 20:38:51
【问题描述】:

基本上我需要一个 if 语句,其响应取决于当前工作目录。

我对该主题进行了一些研究,我相信getcwd() 函数是我正在寻找的,但我无法弄清楚如何在 if 语句中与它交互。

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

【问题讨论】:

    标签: c io directory getcwd


    【解决方案1】:

    下面的代码对我有用吗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 找到。

    希望对您有所帮助。
    非常感谢。

    【讨论】:

    • 非常感谢 Razib,这似乎工作顺利
    【解决方案2】:

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

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

    【讨论】:

    • 该代码将导致未定义的行为。为您分配字符串的实现需要您为 first 参数传入NULL。另请注意,并非所有实现都会分配内存,它不是标准化的。
    猜你喜欢
    • 1970-01-01
    • 2014-01-15
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 2020-09-10
    相关资源
    最近更新 更多