在C中使用#define进行字符串连接

时间:2013-07-09 15:17:22

标签: c linux string concatenation string-concatenation

我正在尝试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

我无法指向该路径,而是打印出当前文件夹中的文件。知道可能是什么问题吗?

3 个答案:

答案 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)