【发布时间】:2015-05-08 20:38:51
【问题描述】:
基本上我需要一个 if 语句,其响应取决于当前工作目录。
我对该主题进行了一些研究,我相信getcwd() 函数是我正在寻找的,但我无法弄清楚如何在 if 语句中与它交互。
我是 C 新手,我正在制作的程序需要位于桌面上(顺便说一句,它是一个 UNIX 系统)才能正常运行,if 语句需要确定它是否位于所述桌面上.
【问题讨论】:
基本上我需要一个 if 语句,其响应取决于当前工作目录。
我对该主题进行了一些研究,我相信getcwd() 函数是我正在寻找的,但我无法弄清楚如何在 if 语句中与它交互。
我是 C 新手,我正在制作的程序需要位于桌面上(顺便说一句,它是一个 UNIX 系统)才能正常运行,if 语句需要确定它是否位于所述桌面上.
【问题讨论】:
下面的代码对我有用吗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);
【讨论】:
NULL。另请注意,并非所有实现都会分配内存,它不是标准化的。