此函数将布尔值转换为字符串。 指出可能的运行时错误。
#define TRUE 1
#define FALSE 0
char* bool2Str(boolean x)
{
char result[5];
if (x == TRUE)
strcpy(result, "TRUE");
if (FALSE == x)
strcpy(result, "FALSE");
return &(result[0]);
}
答案 0 :(得分:11)
strcpy
将尽职尽责地写入的空终止符,但是只有5个空格。答案 1 :(得分:0)
答案 2 :(得分:0)
好吧,如果调用者使用不同的布尔值调用两次,则第二次调用将覆盖第一个调用的结果,因为它是相同的变量(如果它是静态的)。
但是,该变量结果不是静态的,因此被调用者尝试返回指向局部变量的指针,该局部变量将超出nanosec中的范围,这通常是运行时错误/错误的良好来源。 / p>
另外,如果我是对的(不是C大师...),strcpy (result,"FALSE")
将六个字节复制到result
,而result
只能容纳五个元素(索引为0到4)