我正在尝试concatenate字符串,2/3
字符串是路径,而#define
中的defined
例如:
#define BASE_PATH "foo/bar"
#define BIN_PATH "baz/bin"
我希望能够指向预定义的路径。一个示例用例是查看该文件夹的内容。
char path_of_executable[256];
printf ("%s \n",executable);
snprintf(path_of_executable, sizeof 256, "%s,%s,%s",BASE_PATH,executable,BIN_PATH);
printf("%s \n",path_of_executable);
chdir(path_of_executable);
execlp("ls","ls","-l",NULL);
path_of_executable打印为/fo
我无法指向该路径,而是打印出当前文件夹中的文件。知道可能是什么问题吗?
答案 0 :(得分:2)
您正在使用sizeof 256
,其转换为sizeof int
,在您的平台上显然为4。这就是结果字符串不超过4个字符(包括空终止符)的原因。请改用sizeof path_of_executable
。
答案 1 :(得分:2)
将sizeof 256
替换为sizeof( path_of_executable )
答案 2 :(得分:1)
在第
行snprintf(path_of_executable, sizeof 256, "%s,%s,%s",BASE_PATH,executable,BIN_PATH);
将size sizeof 256
替换为sizeof(path_of_executable)