-2

如果我的字符串input1234567890,并且我执行以下操作:

(strcmp(input,"0"))

1如果0我的字符数组中有 a1234567890和 0 如果没有,那会返回吗?

我知道我可以对此进行测试,并且我做到了,答案是肯定的,但我不确定为什么而且我找不到关于 strcmp 的绝对细节。

4

4 回答 4

0

No.strcmp如果两个字符串相同则返回 0,否则返回非 0。看起来你甚至没有费心去谷歌!

于 2013-02-26T02:05:47.107 回答
0

不,它比较两个字符串。

strcmp()仅当两个字符串相同时才返回 0。否则,返回值会说明第一个不匹配的字符。

在您的情况下,这与“1”和“0”之间的比较有关。另一个字符串末尾有一个“0”没有区别。

于 2013-02-26T02:06:11.393 回答
0

如果第二个参数为“0”,C++ 中的 strcmp 是否检查字符串中的每个值</p>

不,它不是,strcmp()是一个字符串比较函数,它检查一个字符串是否等于另一个。如果是,则返回0如果一个字符串通常大于另一个字符串,则返回1-1否则返回。

要检查它是否存在,我建议您为此编写自己的函数。

//return 1 if if the character exists, 0 otherwise
int DoesCharExist(const char *pData, char character)
{
   char *data = pData;
   while(*data++){
     if(*data == character) return 1;
   } 
   return 0;
}
于 2013-02-26T02:13:12.327 回答
0

strcmp()通常会检查从第一个字符到最后一个字符的所有字符,或者直到两个字符串不匹配。

的确切内部实现strcmp(),如果您要问的话,语言标准中没有指定。理论上,它可以找到两个字符串的长度,如果它们相等,则使用大于的单位比较字符串char,甚至反向进行。

strcmp()比较字符串,而不是在另一个中搜索。如果字符串相同,则返回 0。否则,它返回正值或负值,表示第一个不匹配字符之间的差异符号(字符的值被视为无符号)。

于 2013-02-26T02:12:45.710 回答