如果我的字符串input
是1234567890
,并且我执行以下操作:
(strcmp(input,"0"))
1
如果0
我的字符数组中有 a1234567890
和 0 如果没有,那会返回吗?
我知道我可以对此进行测试,并且我做到了,答案是肯定的,但我不确定为什么而且我找不到关于 strcmp 的绝对细节。
如果我的字符串input
是1234567890
,并且我执行以下操作:
(strcmp(input,"0"))
1
如果0
我的字符数组中有 a1234567890
和 0 如果没有,那会返回吗?
我知道我可以对此进行测试,并且我做到了,答案是肯定的,但我不确定为什么而且我找不到关于 strcmp 的绝对细节。
No.strcmp
如果两个字符串相同则返回 0,否则返回非 0。看起来你甚至没有费心去谷歌!
不,它比较两个字符串。
strcmp()
仅当两个字符串相同时才返回 0。否则,返回值会说明第一个不匹配的字符。
在您的情况下,这与“1”和“0”之间的比较有关。另一个字符串末尾有一个“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;
}
strcmp()
通常会检查从第一个字符到最后一个字符的所有字符,或者直到两个字符串不匹配。
的确切内部实现strcmp()
,如果您要问的话,语言标准中没有指定。理论上,它可以找到两个字符串的长度,如果它们相等,则使用大于的单位比较字符串char
,甚至反向进行。
strcmp()
比较字符串,而不是在另一个中搜索。如果字符串相同,则返回 0。否则,它返回正值或负值,表示第一个不匹配字符之间的差异符号(字符的值被视为无符号)。