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()).这样做还有其他办法吗?可能是将一个转换为另一个?
提前致谢.
这是因为b
不具有一个"剩余的252个字节".b
作为内存指针包含两个字符创建<space>
并<nul>
没有别的.
当你分配到b
,你竟然改变指针在四个字符指向a
,b
,c
和<nul>
,但仍然存在,你可以放心地使用后什么都没有.
strcmp
是比较C中字符串的可接受的方法,尽管那些namby-pamby strncmp
-loving类型告诉你它不安全*a,但它们在C中没有正确的编码:-)
*一个它是不安全的,如果你的字符串可能不是空值终止.但话说回来,如果它们不是空终止的,那么它们在技术上并不是字符串.对于处理字符串,strcmp
是工作的正确工具.