例如,假设某些k
是一个任意数= 2 k=2
,那么C中就有代码:
int wordcomp(char *p, char *q) {
int n = k;
for ( ; *p == *q ; p++, q++) {
if ( *p==0 && --n == 0 )
return 0;
}
return *p - *q;
}
请向我解释这段代码的用途?另外,*p-*q
是什么意思?它是如何在Java中实现的?
答案 0 :(得分:25)
请解释一下这段代码的用途是什么?
比较两个单词
还意味着
*p-*q
?
这意味着,告诉我指针p指向的char的值,并将其放在指针q所指向的char上。
以及如何在java中实现它?
*p-*q
部分?就是这样。
// char c
// char k
c - k;
如果你的意思是整个功能,这可以帮助你开始:
int wordcomp( String sp, String sq) {
int n = k; // I have no idea what is this for
int pi = 0, qi = 0;
for ( ; sp.charAt(pi) == sq.charAt(qi) ; pi++, qi++) {
if ( sp.length()==pi && --n == 0 )
return 0;
}
return sp.charAt(pi) - sq.charAt(qi);
您需要验证严格限制。
答案 1 :(得分:3)
看起来接近strcmp。它需要两个字符串指针,在它们上面循环,直到它找到不同的字符,然后如果p在q之后按字母顺序返回一个正值,如果p在q之前按字母顺序排列则为负值,如果它们相同则为0。正如其他人所说,k看起来定义了在它返回0之前要比较的连续空终止字符串的数量。
答案 2 :(得分:1)
*p-*q
表示从指针p指向的值中减去指针q指向的值。
这是C,减去2个char值意味着减去它们的ASCII码。
答案 3 :(得分:1)
此函数循环遍历两个字符数组,比较它们是否相等。
如果它们不相等,则返回* p - * q,这是第一个不相等位置的值之间的差值。如果在第一个字符串中的第k个零之后仍然没有不等式,则返回0.
因此,它返回第一个不相等位置的值之间的差值,如果第一个字符串有k个零,则返回0,并且相等于该点到第二个字符串。
答案 4 :(得分:0)
返回最大长度为char
的两个字符数组(*p
和*q
)中前两个不相似k
之间的差异,即
batter
batsman
退货 't'-'s'
如果两个字符串的长度k
和相同,则我们会找到p
的空字符,我们会返回0
。我认为它应该是||
而不是&&
,因为这些是终止条件。
答案 5 :(得分:0)
它将char数组(单词)与k中的元素集进行比较。 让我们说如果你有k = 4,这意味着它将比较前4个字符。 我也相信而不是
if ( *p==0 && --n==0)
你需要
if ( *p==0 || --n==0)
另请考虑使用p - q
。
功能名称必须为wordcomp
,而不是wrodcomp
。
总而言之,它与string.h
中的strncmp
类似。