【问题标题】:Generate random string for member of struct为结构成员生成随机字符串
【发布时间】:2015-02-26 20:22:39
【问题描述】:

我想知道如何为结构的成员生成随机字符串并将这个值分配给结构的成员。

我的结构是这样定义的:

struct student{
       int key;
       char name[25];
}

我已经生成了struct的成员“key”的随机数。
方法部分代码:

    struct student s;
    int r = rand() % 5000;
    s.key=r;

注意:使用 srand(time(NULL));在 main() 中定义。

我如何为 s.name 做这件事?

【问题讨论】:

  • this 有帮助吗?
  • this -- 等等。很难说你的问题是什么。

标签: c random struct


【解决方案1】:

rand() 返回int,因此您不能使用rand() 将随机字符串分配给您的结构成员。

您可以使用 rand() 执行以下操作来生成随机字符串。

char a[]="abcde...z";

for(i=0;i<20;i++)
{
   int r = rand() %26;
   s.name[i] = a[r];
}
s.name[20] = '\0';

在循环确保你 NULL 终止字符串之后。

【讨论】:

    【解决方案2】:

    这将生成随机的小写字符串

    void
    generate_random_string(char *string, size_t length)
    {
        size_t i;
        for (i = 0 ; i < length - 1 ; i++)
            string[i] = rand() % ('z' - 'a') + 'a';
        string[length - 1] = '\0';
    }
    

    像这样将你的结构成员传递给它

    generate_random_string(s.name, sizeof(s.name));
    

    【讨论】:

    • 谢谢!但是如何将“generate_random_string(s.name, sizeof(s.name))”的值分配给 s.name?
    • 你不需要赋值(你实际上不能),你直接写入数组。在generate_random_string(s.name, sizelf(s.name)) 中传递一个指向数组的指针。所以你把它的内容写在函数里面。函数generate_random_string() 中的参数string 指向内存中s.name 指向的相同位置。
    猜你喜欢
    • 1970-01-01
    • 2015-02-26
    • 2017-08-01
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多