如何在C中填充随机大写字母数组作为函数?
我正在尝试编写一个函数,用40个随机大写字母填充数组。我试图填充数组并打印它,但没有得到任何输出 先谢谢你如何在C中填充随机大写字母数组作为函数?,c,arrays,random,fill,C,Arrays,Random,Fill,我正在尝试编写一个函数,用40个随机大写字母填充数组。我试图填充数组并打印它,但没有得到任何输出 先谢谢你 #include <stdio.h> #include <stdlib.h> void fillS1(char y[]); int main(int argc, const char * argv[]) { char s1[40]; int n; fillS1(&s1[40]); for (n = 0; n < 41; n++) { p
#include <stdio.h>
#include <stdlib.h>
void fillS1(char y[]);
int main(int argc, const char * argv[])
{
char s1[40];
int n;
fillS1(&s1[40]);
for (n = 0; n < 41; n++) {
printf("%s", s1);
}
return 0;
}
void fillS1(char y[40]){
int x = 1;
while (x < 41) {
x = rand() % 26;
x = 2 + 'A';
x = y[x];
x++;
}
}
#包括
#包括
空隙填充1(字符y[]);
int main(int argc,const char*argv[]
{
chars1[40];
int n;
填充1(&s1[40]);
对于(n=0;n<41;n++){
printf(“%s”,s1);
}
返回0;
}
空白填充1(字符y[40]){
int x=1;
而(x<41){
x=rand()%26;
x=2+‘A’;
x=y[x];
x++;
}
}
我只想编码
void fill_string_40(char str[])
{
for (int i=0; i<40; i++)
str[i] = 'A' + random() % 26;
str[40] = (char)0; // (char)0 is equal to use '\0'
}
请注意,空终止字符需要一个额外的字节。我们假设一些ASCII兼容的字符编码。一种更便携的方式可能是
str[i] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[random() % 26];
因为文字字符串是字符的常量数组
如果C++中代码,请参见。如果您为Linux编写代码,请参阅,或者与一起使用。还可以阅读有关我只需编写代码的
void fill_string_40(char str[])
{
for (int i=0; i<40; i++)
str[i] = 'A' + random() % 26;
str[40] = (char)0; // (char)0 is equal to use '\0'
}
请注意,空终止字符需要一个额外的字节。我们假设一些ASCII兼容的字符编码。一种更便携的方式可能是
str[i] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[random() % 26];
因为文字字符串是字符的常量数组
如果C++中代码,请参见。如果您为Linux编写代码,请参阅,或者与一起使用。另外,您应该在调用
fillS1()
时传递第一个字符的地址。替换fillS1(&s1[40])代码>带有fillS1(&s1[0])代码>另外,在调用fillS1()
时,应该传递第一个字符的地址。替换fillS1(&s1[40])代码>带有fillS1(&s1[0])代码>试试这个,别忘了在程序开始的某个地方调用srand(),一次
void fillRand(char ar[], size_t len)
{
size_t i=0;
if (0 == len)
return;
for (i=0;i<(len-1);++i)
ar[i] = (rand() % 26) + 'A';
ar[len-1] = 0;
}
void fillRand(字符ar[],大小长度)
{
尺寸i=0;
如果(0==len)
返回;
对于(i=0;i试试这个,不要忘了在程序开始时的某个地方调用srand(),一次
void fillRand(char ar[], size_t len)
{
size_t i=0;
if (0 == len)
return;
for (i=0;i<(len-1);++i)
ar[i] = (rand() % 26) + 'A';
ar[len-1] = 0;
}
void fillRand(字符ar[],大小长度)
{
尺寸i=0;
如果(0==len)
返回;
对于(i=0;iUseprintf(“%s\n”,s1)
打印s1
。考虑到'A'
在大多数系统上是65,你可能很快就会发现你是如何将2添加到其中,然后将其用作长度为40的数组中的索引的。即使x
刚刚有了循环的值,你仍然从1开始,当数组从0开始到40时,你仍然是从40n-1.你马上就把你生成的可爱的rand()扔掉了。也许没有那么可爱,也没有那么rand,因为srand()从未被调用过。Basile,我接受了你的建议,我的输出是:/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n(ect)。这是反斜杠\n不是斜杠/
Useprintf(“%s\n”,s1)
打印s1
。考虑到'A'
在大多数系统上是65,你可能很快就会发现你是如何将2添加到其中,然后将其用作长度为40的数组中的索引的。即使x
刚刚有了循环的值,你仍然从1开始,当数组从0开始到40时,你仍然是从40n-1.你马上就扔掉了你生成的可爱的rand()。嗯,也许不是那么可爱,也不是那么rand,因为srand()从未被调用过。Basile,我接受了你的建议,我的输出是:/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n/n(ect)。这是反斜杠\n不是斜杠/
为什么在存储41个值时使用42?实际上,如果像OP那样存储41个值,42是有意义的,但您只存储40。因为42甚至是
——我不知道这有什么关系。我会将其设置为8的倍数(单词大小)
——也不是那样。让它符合要求和逻辑要求。“我声明s的大小为48,因为它通常是单词大小的倍数”--这和什么有什么关系?编译器完全能够在有意义的情况下调整内容以提高效率。这很完美,但不需要打印40次。lol。它没有打印40次,调用块应该在main
中,为什么在存储41个值时使用42?实际如果像OP那样存储41个值,那么ly 42是有意义的,但您只存储40个。因为42甚至是
——我不知道为什么这是相关的。我会将其设置为8的倍数(一个单词的大小)
——也不是那样。让它符合要求和逻辑要求。“我声明大小为48,因为这通常是单词大小的倍数“--这和什么有什么关系?编译器完全能够在有意义的情况下调整内容以提高效率。这很完美,但不需要打印40次。lol。它没有打印40次,调用块应该是在main