C语言 我正在编写一个函数,该函数稍后依赖于生成一些文本,该文本必须保持本质上的长度:
115 letters minus the length of substring within <> from the original argument to the function
- (115 - 子字符串长度)。
但是,C 不接受具有动态值的
char text[value]
,我需要该代码中的它是动态的,并且取决于提取的子字符串的大小。
我该怎么做?
char* RandomText(char* originalMsg)
{
char* subString;
char msgClone[256];
strcpy(msgClone, originalMsg);
subString = strtok(msgClone, "<");
subString = strtok(NULL, ">");
int spewageSize = 115 - strlen(subString); //110 + safe buffer for \n and \0
char text[spewageSize];
\\ the rest of the code follows here
}
如注释中所述,支持可变长度数组的编译器将执行此操作。值得注意的是,GCC 可以,Clang 也可以实现兼容性,而 MSVC 则不能。
但是,内存很便宜,因此请为字符串分配足够的空间。如果您知道需要的最大值是 115,则使用该值即可。或者甚至分配更多空间。无论如何,您的编译器很可能会出于对齐目的。
如果您想要另一个字符串的重复项,并且该字符串需要从函数返回,您可能希望使用
strdup
。