3

我需要将字符串文字传递给函数

myfunction("arg1" DEF_CHAR "arg1");

现在构造的字符串文字的一部分需要是函数返回

stmp = createString();
myfunction("arg1" stmp "arg2"); //oh that doesn't work either

有没有办法在一行中做到这一点?

myfunction("arg1" createString() "arg2"); //what instead?

注意:请仅使用 C。

我的目标是避免为此初始化一个新的字符数组 =/

4

5 回答 5

4

您不能在运行时构建字符串文字,但您可以创建字符串,如下所示:

char param[BIG_ENOUGH];

strcpy(param, "arg1");
strcat(param, createString());
strcat(param, "arg2");
myfunction(param);
于 2010-04-09T20:38:40.633 回答
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);
于 2010-04-09T20:39:39.660 回答
2

C 不支持动态字符串,因此您尝试的操作是不可能的。createString() 函数的返回值是一个变量,而不是文字,因此您不能将它与其他文字连接。话虽如此,如果将它放在一行中对您来说真的很重要,您可以创建一个辅助函数来促进这一点,如下所示:

char * my_formatter( const char * format, ... )
{
...
}

myfunction(my_formatter("arg1%sarg2", createString()));

但是,这种方法存在一些内存管理和线程安全问题。

于 2010-04-09T20:41:55.590 回答
1

您需要为此创建一个字符数组;编译器仅连接字符串文字。

于 2010-04-09T20:38:36.843 回答
0

没有。如果不分配新的缓冲区来连接字符串,就无法在纯 C 中执行此操作。

于 2010-04-09T20:38:51.243 回答