2012-10-30 13 views

回答

3

您可以使用sprintf()

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

更加可靠的选择是使用snprintf()如果你的运行时库提供的:

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

以这种方式使用snprintf()确保得到的字符串将不溢出buf的界限。

+0

难道只能存储长达10个数字的整数吗?如果它更长? –

+0

@ user1787038:你说的没错。为了存储所有可能的值,你应该检查'RAND_MAX'的值是否适合你的平台,并使用适当的字符串宽度。如果不符合最大尺寸的假设,使用'snprintf()'将避免覆盖超过缓冲区末尾的内存。 –

+0

这是一个很好的观点,我只是将声明更改为'char buf [11]'以容纳10位数字的NUL终结符。 –

相关问题