【发布时间】:2011-08-25 17:40:05
【问题描述】:
我需要一个函数的工作代码,该函数将返回一个随机长度的随机字符串。
下面的代码会更好地描述我想做的事情。
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 微控制器编译,因此我不能使用 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);
}
但它只会打印一堆无意义的字符。
【问题讨论】:
-
如果您希望获得可预测的结果,则不能返回指向堆栈上数据的指针。让调用者传递内存目标(例如 char*、 和 大小限制)或在堆上返回一些东西(通过
malloc分配,调用者必须free)。 -
stdio.h不是库,而是标头。您是说不允许包含stdlib.h,因此不能选择malloc? -
为什么要严格禁止?如果这是家庭作业,请添加
homework标签。您的具体要求是什么? -
void main()是错误。使用int main(void)。向任何告诉你使用void main()的书的作者投诉。 -
random-length是什么意思是random减去length吗?或random_length,即单个变量。
标签: c pointers c-strings character-arrays