C 函数接受两个字符串,要比较第n个字符
我有一个接受两个字符串的函数,我想,让我们来比较每个字符串的第二个字母。 如何修复此语句:C 函数接受两个字符串,要比较第n个字符,c,C,我有一个接受两个字符串的函数,我想,让我们来比较每个字符串的第二个字母。 如何修复此语句: if (strncmp(str1 + 1, str2 + 1) != 0) { ... 我收到一个错误,指出传递参数会使指针从整数变为不带强制转换的指针。如果希望允许任何字符串都可能小于要比较的位置,请执行以下操作: if (str1[1] == str2[1]) { /* Do something */ } /* Return 1 if s1[n] > s2[n], 0 if s1[n
if (strncmp(str1 + 1, str2 + 1) != 0) {
...
我收到一个错误,指出传递参数会使指针从整数变为不带强制转换的指针。如果希望允许任何字符串都可能小于要比较的位置,请执行以下操作:
if (str1[1] == str2[1]) {
/* Do something */
}
/* Return 1 if s1[n] > s2[n], 0 if s1[n] == s2[n], -1 if s1[n] < s2[n].
Return -2 if any of the strings is smaller than n bytes long. */
int compare_nth(const char *s1, const char *s2, size_t n)
{
size_t i;
for (i=0; i < n; ++i)
if (s1[i] == 0 || s2[i] == 0)
return -2;
if (s1[n] < s2[n])
return -1;
else if (s1[n] > s2[n])
return 1;
else
return 0;
}
如果您确实知道每个字符串中至少有n
个字符,您可以按照其他人说的做:
if (s1[n] == s2[n]) {
/* do whatever you want to do here */
}
(注意:由于C中的索引是从0开始的,
n
在这里的意义相同。因此,为了测试第二个字符,n
将是1
)如果您希望允许任何字符串都可能小于您要比较的位置:
/* Return 1 if s1[n] > s2[n], 0 if s1[n] == s2[n], -1 if s1[n] < s2[n].
Return -2 if any of the strings is smaller than n bytes long. */
int compare_nth(const char *s1, const char *s2, size_t n)
{
size_t i;
for (i=0; i < n; ++i)
if (s1[i] == 0 || s2[i] == 0)
return -2;
if (s1[n] < s2[n])
return -1;
else if (s1[n] > s2[n])
return 1;
else
return 0;
}
如果您确实知道每个字符串中至少有n
个字符,您可以按照其他人说的做:
if (s1[n] == s2[n]) {
/* do whatever you want to do here */
}
(注意:由于C中的索引是从0开始的,
n
在这里使用相同的含义。因此,为了测试第二个字符,n
将是1
)这不是正确使用strncmp
,顺便说一句。还有第三个参数size\u t n
,它规定了应该比较的长度。在本例中,您可以使用==
简单地比较字符本身。哎呀,我忘了将“1”作为第三个参数。顺便说一句,这不是正确使用strncmp
。还有第三个参数size\u t n
指示您应该比较的长度。在本例中,您可以使用==
简单地比较字符本身。哎呀,我忘了将“1”作为第三个参数。这是最简单的方法。这是最简单的方法