比较静态char []和const char*

har*_*ari 2 c char string-comparison

static char a[255] = "\0";
and
const char *b = " ";
Run Code Online (Sandbox Code Playgroud)

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

提前致谢.

pax*_*blo 6

这是因为b具有一个"剩余的252个字节".b作为内存指针包含两个字符创建<space><nul>没有别的.

当你分配b,你竟然改变指针在四个字符指向a,b,c<nul>,但仍然存在,你可以放心地使用后什么都没有.

strcmp是比较C中字符串的可接受的方法,尽管那些namby-pamby strncmp-loving类型告诉你它不安全*a,但它们在C中没有正确的编码:-)


*一个不安全的,如果你的字符串可能不是空值终止.但话说回来,如果它们不是空终止的,那么它们在技术上并不是字符串.对于处理字符串,strcmp是工作的正确工具.