比较静态char []和const char *

时间:2010-10-29 05:48:40

标签: c char string-comparison

static char a[255] = "\0";
and
const char *b = " ";

现在当我将“abc”分配给a和b时,对于一个剩余的252字节保持'\ 0'而对于b则不是那样的。因此,当我尝试比较它们时,它们会变得不同。 一种解决方案是直接比较(b)sizeof(和strncmp())。 这样做还有其他办法吗?可能是将一个转换为另一个?

提前致谢。

2 个答案:

答案 0 :(得分:6)

那是因为b <剩余252字节“。 b被创建为指向内存的指针,其中包含两个字符<space><nul>,而不包含任何内容。

当您分配给b时,实际上您将指针更改为指向四个字符abc和{ {1}},但在那之后仍然没有什么可以安全使用的。

<nul>是比较C语言中字符串的可接受方式,尽管那些表示不安全 * a 的namby-pamby strcmp爱好类型,但他们没有首先在C中正确编码: - )


* a 如果您的字符串不能以空值终止,则 不安全。但话说回来,如果它们不是空终止的,那么它们在技术上并不是字符串。对于处理字符串,strncmp是正确的工具。

答案 1 :(得分:1)

嗯,首先你不想给b分配“abc”。更改值时,它将导致C风格字符串的内存泄漏。

要比较你想要使用strcmp函数。它在图书馆里。