【问题标题】:How to store a random number into a null-terminated character array?如何将随机数存储到以空字符结尾的字符数组中?
【发布时间】:2012-10-30 22:46:53
【问题描述】:

我认为使用fgets 是最好的选择,但显然它需要来自标准输入的输入?如何使用rand()生成随机数并存储?

【问题讨论】:

  • 如何存储?最明显的方法是将其存储为十进制表示法;如果这就是你的意思,请说出来。

标签: c arrays random character null-terminated


【解决方案1】:

你可以使用sprintf():

char buf[11];
int r = rand();
sprintf(buf, "%d", r);

如果您的运行时库提供了snprintf(),则更强大的选择是:

snprintf(buf, sizeof(buf), "%d", r);

以这种方式使用snprintf()可确保生成的字符串不会溢出buf的边界。

【讨论】:

  • 那不是只能存储最多 10 个数字的整数吗?如果它更长呢?
  • @user1787038:你是对的。为了存储所有可能的值,您应该检查RAND_MAX 的值对于您的平台是什么,并使用适当的字符串宽度。如果不满足您对最大大小的假设,使用snprintf() 将避免覆盖缓冲区末尾的内存。
  • 这很好,我只是将声明更改为 char buf[11] 以适应 10 位数字的 NUL 终止符。
  • Buf 大小应等于您的 RAND_MAX 的位数(取决于您的计算机)+ 1 表示 NUL 终止符。
  • 它以 int 形式打印,因此您还需要考虑减号。
猜你喜欢
  • 2020-12-10
  • 2013-05-03
  • 1970-01-01
  • 2019-01-02
  • 2021-08-23
  • 1970-01-01
  • 1970-01-01
  • 2013-10-21
  • 2016-03-26
相关资源
最近更新 更多