【问题标题】:string concatenation using #define in C在 C 中使用#define 进行字符串连接
【发布时间】:2013-07-07 06:44:40
【问题描述】:

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

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

【问题讨论】:

    标签: c linux string concatenation string-concatenation


    【解决方案1】:

    排队

    snprintf(path_of_executable, sizeof 256, "%s,%s,%s",BASE_PATH,executable,BIN_PATH);
    

    用 sizeof(path_of_executable) 替换 sizeof 256

    【讨论】:

      【解决方案2】:

      sizeof 256 替换为sizeof( path_of_executable )

      【讨论】:

        【解决方案3】:

        您正在使用sizeof 256,它转换为sizeof int,在您的平台上显然是4。这就是结果字符串不超过 4 个字符(包括空终止符)的原因。请改用sizeof path_of_executable

        【讨论】:

        • 哇!但是为什么我不能切换到那个目录呢? .我收回我的问题
        • %s 之间的额外, 造成了问题。
        猜你喜欢
        • 2017-08-27
        • 1970-01-01
        • 1970-01-01
        • 2012-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-23
        • 2020-06-21
        相关资源
        最近更新 更多