gpt4 book ai didi

c - (串联)在 C 中将 4 个 "char *"宏添加在一起

转载 作者:行者123 更新时间:2023-11-30 20:02:48 26 4
gpt4 key购买 nike

我有四个 char * 宏,我想将它们放在一起,但我只看到带有两个 char * 的答案,有办法做到吗?

这是代码:

#define one   "\x0C\x03\xD1\x00"
#define two "\xC1\x03\x1A\x0C"
#define three "\xA2\x1A\x0D\x00"
#define four "\xD4\x1C\x4C\x0A"

char *concat(const char *s1, const char *s2, const char *s3, const char *s4) {
char *cat = malloc(strlen(s1) + strlen(s2) + strlen(s3) + strlen(s4) + 1);
strcpy(cat, s1);
strcpy(cat, s2);
strcpy(cat, s3);
strcat(cat, s4);
return cat;
}

最佳答案

由于 onetwo Threefour 是直接扩展为字符串常量的宏,因此您可以简单地这样做:

char result[] = one two three four;

宏展开后会变成

char result[] = "\x0C\x03\xD1\x00" "\xC1\x03\x1A\x0C" "\xA2\x1A\x0D\x00" "\xD4\x1C\x4C\x0A";

相邻的字符串文字会自动连接。

请注意,如果您用变量替换宏,则这将不起作用,例如char *one = "\x0C\x03\xD1\x00";

有关连接任意字符串(不一定是宏)的更通用方法,请参阅其他答案。

关于c - (串联)在 C 中将 4 个 "char *"宏添加在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59923096/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com