首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个函数是做什么的?

这个函数是做什么的?
EN

Stack Overflow用户
提问于 2010-10-30 01:47:54
回答 4查看 687关注 0票数 4
代码语言:javascript
复制
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,‘或`;’在'{‘标记之前

EN

回答 4

Stack Overflow用户

发布于 2010-10-30 01:49:16

它比较两个字符串,如果字符串1以字符串2开头,则返回1,反之亦然,否则返回0

票数 11
EN

Stack Overflow用户

发布于 2010-10-30 01:53:45

如果(s1,s2)中较短的一个与较长的一个的开头不同,则返回0。字符串的长度可以不同,但其中一个必须是从另一个开头开始的子字符串。

编辑。糟糕,sharth比我先一步。在我面前给他投票吧。

票数 4
EN

Stack Overflow用户

发布于 2010-10-30 02:00:22

这值得解释吗?

代码语言:javascript
复制
 for( ; *s1 != '\0' && *s2 != '\0'; s1++, s2++ ) {

for循环中的第一个元素,在第一个';‘之前执行初始设置,这里不需要。

因此,当s1和s2所指向的任何一个字符不为零时,for循环就会运行。零标记c和c++中字符串的结束。

for循环的最后一部分是在每个循环上要做的额外工作-在本例中,将指针s1和s2移动到每个字符串中的下一个字符。

代码语言:javascript
复制
   if( *s1 != *s2 ) {
      return 0;

如果s1和s2指向的字符不相同-即我们在两个字符串中找到了第一个不同的字符,则返回0,即false

代码语言:javascript
复制
return 1;

如果我们到达其中一个字符串的末尾,并且没有找到任何不同的字符,则返回1--即true。

因此,如果两个字符串相同或一个字符串以另一个字符串开头,则函数返回true,而false表示字符串具有和不同的字符。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4054496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档