int mystery( const char *s1, const char *s2 ) {
for( ; *s1 != '\0' && *s2 != '\0'; s1++, s2++ ) {
if( *s1 != *s2 ) {
return 0;
} //end if
} //end for
return 1;
}我知道它有输入错误,但这就是它原来的样子。谢谢大家,我也需要它来运行,我已经添加了变量声明,但我得到了编译器错误,它说
在函数`int main()':中
error: a function-definition is not allowed here before '{' token
error: expected,‘或`;’在'{‘标记之前
发布于 2010-10-30 01:49:16
它比较两个字符串,如果字符串1以字符串2开头,则返回1,反之亦然,否则返回0。
发布于 2010-10-30 01:53:45
如果(s1,s2)中较短的一个与较长的一个的开头不同,则返回0。字符串的长度可以不同,但其中一个必须是从另一个开头开始的子字符串。
编辑。糟糕,sharth比我先一步。在我面前给他投票吧。
发布于 2010-10-30 02:00:22
这值得解释吗?
for( ; *s1 != '\0' && *s2 != '\0'; s1++, s2++ ) {for循环中的第一个元素,在第一个';‘之前执行初始设置,这里不需要。
因此,当s1和s2所指向的任何一个字符不为零时,for循环就会运行。零标记c和c++中字符串的结束。
for循环的最后一部分是在每个循环上要做的额外工作-在本例中,将指针s1和s2移动到每个字符串中的下一个字符。
if( *s1 != *s2 ) {
return 0;如果s1和s2指向的字符不相同-即我们在两个字符串中找到了第一个不同的字符,则返回0,即false
return 1;如果我们到达其中一个字符串的末尾,并且没有找到任何不同的字符,则返回1--即true。
因此,如果两个字符串相同或一个字符串以另一个字符串开头,则函数返回true,而false表示字符串具有和不同的字符。
https://stackoverflow.com/questions/4054496
复制相似问题