我需要将字符串文字传递给函数
myfunction("arg1" DEF_CHAR "arg1");
现在,构造的字符串文字的一部分需要是函数返回
stmp = createString();
myfunction("arg1" stmp "arg2"); //oh that doesn't work either
有没有办法在一行中做到这一点?
myfunction("arg1" createString() "arg2"); //what instead?
注意:只请C。
我的目标是避免为此= /
初始化一个新的char数组答案 0 :(得分:4)
您无法在运行时构建字符串文字,但您可以创建字符串,如下所示:
char param[BIG_ENOUGH];
strcpy(param, "arg1");
strcat(param, createString());
strcat(param, "arg2");
myfunction(param);
答案 1 :(得分:2)
char buffer[1024] = {0};
//initialize buffer with 0
//tweak length according to your needs
strcat(buffer, "arg1");
strcat(buffer, createString()); //string should be null ternimated
strcat(buffer, "arg2");
myfunction(buffer);
答案 2 :(得分:2)
C不支持动态字符串,因此您尝试的是不可能的。 createString()函数的返回值是一个变量,而不是文字,因此您无法将其与其他文字连接起来。话虽这么说,如果你将它放在一行上对你来说真的很重要,你可以创建一个辅助函数来实现这一点,如下所示:
char * my_formatter( const char * format, ... )
{
...
}
myfunction(my_formatter("arg1%sarg2", createString()));
然而,这种方法存在一些内存管理和线程安全问题。
答案 3 :(得分:1)
你需要为此制作一个字符数组;只有字符串文字由编译器连接。
答案 4 :(得分:0)
不。在没有分配新缓冲区来连接字符串的情况下,无法在纯C中执行此操作。