static char a[255] = "\0";
and
const char *b = " ";
现在,当我将“abc”分配给 a 和 b 时,对于 a 剩余的 252 个字节保持 '\0' 而对于 b 则不是这样。因此,当我尝试比较它们时,它们会变得不同。一种解决方案是只比较直到 sizeof(b),就像我们在 strncmp() 中所做的那样。还有其他方法吗?可能是通过将一个转换为另一个?
提前致谢。
static char a[255] = "\0";
and
const char *b = " ";
现在,当我将“abc”分配给 a 和 b 时,对于 a 剩余的 252 个字节保持 '\0' 而对于 b 则不是这样。因此,当我尝试比较它们时,它们会变得不同。一种解决方案是只比较直到 sizeof(b),就像我们在 strncmp() 中所做的那样。还有其他方法吗?可能是通过将一个转换为另一个?
提前致谢。
那是因为没有b
“剩余 252 字节”。被创建为指向内存的指针,其中包含两个字符,仅此而已。b
<space>
<nul>
当您分配给 时b
,您实际上将指针更改为指向四个字符a
、和b
,但是在那之后仍然没有任何东西可以安全地使用。c
<nul>
strcmp
是在 C 中比较字符串的公认方法,尽管那些喜欢 namby- strncmp
pamby 的类型告诉你它是不安全的*a,但它们首先在 C 中没有正确的编码:-)
*a如果您的字符串不是以空值结尾的,则这是不安全的。但话又说回来,如果它们不是以空值结尾的,它们在技术上不是字符串。对于处理字符串,strcmp
是适合这项工作的工具。
好吧,首先您不想将“abc”分配给b。当您更改值时,它将导致 C 样式字符串的内存泄漏。
要进行比较,您要使用 strcmp 函数。它在图书馆里。