【发布时间】:2020-08-22 15:04:06
【问题描述】:
我正在尝试使用此函数创建一个随机字符串:
static char *rand_string(char *str)
{
const char charset[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJK";
int i;
for ( i = 0; i < 10; i++)
{
int key = rand() % (int) (sizeof charset - 1);
str[i] = charset[key];
}
str[11] = '\0';
return str;
}
问题是这样的:有时当我要打印指针时,它会显示一些奇怪的字符,如下所示: 如您所见,在第一次启动时,字符串中的字符为 10,在第二次和第三次启动时,字符串中的字符为 11...
这是我的程序:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
static char *rand_string(char *str);
int main()
{
char *string, //str
*string_result; //str1
int dimensione= 15,
i;
for(i=0;i<dimensione;i++)
{
string_result = rand_string(string);
printf("%s\n", string_result);
}
}
static char *rand_string(char *str)
{
const char charset[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJK";
int i;
for ( i = 0; i < 10; i++)
{
int key = rand() % (int) (sizeof charset - 1);
str[i] = charset[key];
}
str[11] = '\0';
return str;
}
你可以在这里查看和测试我的代码 --> https://onlinegdb.com/r1yY8DWc8
【问题讨论】:
-
你是否选择了正确的索引来结束
rand_string中的字符串? -
你不应该这样做
str[10] = '\0' -
@PeterO。我想是的......
-
@Inian 你能解释一下吗?
-
@Inian 您删除了代码,但这是正确的方法!谢谢你,我已经接受了,但我们可以与社区分享!
标签: c arrays string pointers random