Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C中填充随机大写字母数组作为函数?_C_Arrays_Random_Fill - Fatal编程技术网

如何在C中填充随机大写字母数组作为函数?

如何在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

我正在尝试编写一个函数,用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++) {
    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;iUse
printf(“%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不是斜杠
/
Use
printf(“%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