我需要一个函数的工作代码,该函数将返回一个随机长度的随机字符串。
下面的代码可以更好地描述我想做的事情。
char *getRandomString()
{
char word[random-length];
// ...instructions that will fill word with random characters.
return word;
}
void main()
{
char *string = getRandomString();
printf("Random string is: %s\n", string);
}
为此,我严格禁止使用除stdio.h 之外的任何其他包含。 编辑:这个项目将被改编为为 PIC 微 Controller 编译,因此我不能使用 malloc() 或类似的东西。 我在这里使用 stdio.h 的原因是为了能够使用 GCC 检查输出。
目前,这段代码给出了这个错误。-
“警告:函数返回局部变量的地址 [默认启用]”
然后,我认为这可行。-
char *getRandomString(char *string)
{
char word[random-length];
// ...instructions that will fill word with random characters.
string = word;
return string;
}
void main()
{
char *string = getRandomString(string);
printf("Random string is: %s\n", string);
}
但它只会打印出一堆无意义的字符。
最佳答案
有 3 种常见的方法可以做到这一点。
让调用者传入一个指向要存储数据的数组(的第一个元素)的指针,以及一个长度参数。如果返回的字符串大于传入的长度,则报错;你需要决定如何处理它。 (您可以截断结果,也可以返回空指针。无论哪种方式,调用者都必须能够处理它。)
返回一个指向新分配对象的指针,调用者负责调用
free
完成后。如果malloc()
可能返回空指针失败(这始终是可能的,您应该始终检查它)。自malloc
和free
在<stdlib.h>
中声明这不符合您的(人为的)要求。返回指向静态 数组(的第一个元素)的指针。这避免了返回指向本地分配对象的指针的错误,但它有其自身的缺点。这意味着以后的调用会破坏原始结果,并且它会施加一个固定的最大大小。
如果这些是理想的解决方案,则无。
关于c - 如何从函数返回可变大小的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7194776/