gpt4 book ai didi

c - 尝试随机生成一个字符串以便执行条件

转载 作者:行者123 更新时间:2023-11-30 15:18:27 25 4
gpt4 key购买 nike

看来C语言的字符串是我的弱项,再次需要你们的帮助。我应该将其包含在我的第一个中,所以我对此表示歉意。

所以我有一个可以正常工作的函数,它用集合 {r, e, s, e, t} 中的随机字符填充字符串并返回它:

char *inputString()
{
static char string[6];
const char *digits = "reset";
int i;

for (i = 0; i < 5; i++)
{
string[i] = digits[ rand() % 4 + 0 ];
}

return string;
}

所以 string[5] 处的字符是 '\0',对吗? string[1] 到 string[4] 是其他字符(r、e、s、e、t)的随机组合。

现在,我有另一个函数调用这个函数。它的目的是尝试让 printf 语句执行:

other_fxn() 
{
char *s;

while (1)
{
s = inputString();
if (s[0] == 'r'&& s[1] == 'e' && s[2] == 's' && s[3] == 'e' && s[4] == 's'
&& s[5] == '\0')
{
printf('worked!\n');
break;
}
}
}

主要:

{
srand(time(NULL));
other_fxn();
}

它编译得很好,但循环会永远运行,if 语句永远不会执行。有人可以帮我解决为什么它不会执行吗?再次感谢。

最佳答案

  while (1) 
{
s = inputString();
if (s[0] == 'r'&& s[1] == 'e' && s[2] == 's' && s[3] == 'e' && s[4] == 't'
&& s[5] == '\0')
{
printf('worked!\n');
break;
}

}

首先,在您的示例中,您正在寻找单词“reses”。而且您只是不更改循环内的字符串。因此,只有在初始生成后重置随机字符串,您才会退出循环。我不知道你为什么需要这个,但上面的代码会跳出循环。也许不会那么快,但总会的。

另外,这是什么:

string[i] = digits[ rand() % 4 + 0 ];

为什么是+ 0?为什么是%4,而不是%5

最好这样做:

char *inputString()
{
static char string[6];
const char *digits = "reset";
for (int i = 0; i < 5; i++)
{
string[i] = digits[ rand() % 5];
}
return string;
}

尝试使用调试器,它确实有帮助。

关于c - 尝试随机生成一个字符串以便执行条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31486553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com