【问题标题】:error while creating a function similar to strcmp()创建类似于 strcmp() 的函数时出错
【发布时间】:2020-03-29 22:03:45
【问题描述】:

我创建了一个类似于 strcmp() 的函数 - 称为 compareString。首先 if else 条件检查两个字符串是否等长。 for 循环检查数组 a 和 b 的每个元素是否相等,并在检查整个字符串后停止 [ 按条件 i if 条件应检查直到 countString(a)-1

bool compareString(char a[],char b[])
{
    if(countString(a)==countString(b)) //i had made a function countString that works as strlen
    {
        int i;
        printf("%d\n",countString(a));
       for(i=0;a[i]==b[i]&&i<countString(a);i++) {};
       if(i==countString(a)-1) return 1; //*********line1*******// 
       else return 0;
    }
    else
        return 0;
}

在 for 循环的情况下,我已经提到了我

【问题讨论】:

  • 您的问题不完整吗?我没有看到您遇到的问题的实际问题或描述。或者你得到一个编译错误?因为有一个错字:{) 应该是{}
  • 我创建了一个类似于 strcmp() 的函数 - 称为 compareString。首先 if else 条件检查两个字符串是否等长。 for 循环检查数组 a 和 b 的每个元素是否相等,并在检查整个字符串后停止 [ 通过条件 i if 条件应检查直到 countString(a)-1 ,就像我提到的 for 循环的条件 i
  • 请把它放到问题中。 “正确的输出”到底是什么意思?请提供准确的输入、预期输出和实际输出。而且您确实需要提供代码的minimal verifiable example
  • 我猜有一些字符限制,所以整个问题不可见。通过正确的输出,我的意思是当我比较两个相同的字符串时,它在 if 语句中返回 0 和条件 countString(a)-1。但是当我将条件countString(a)放入if语句时,两个相似的字符串返回1。所以我想问一下if(i==countString(a)-1)我应用的这个条件是否正确。 @kaylum

标签: c string function


【解决方案1】:

您的代码需要重新调整。

bool compareString(char a[], char b[]) {
    // strings not the same length, return false
    if (countString(a) != countString(b)) {
        return 0;
    }
    // we call this before the loop so we don't call it multiple times
    int len = countString(a);
    for (int i = 0; i < len; i ++) {
        // strings have differing characters, return false
        if (a[i] != b[i]) {
            return 0;
        }
    }
    // we haven't returned false yet so they're the same
    return 1;
}

请记住,当您调用return 时,代码会立即停止运行并退出函数。

【讨论】:

  • "请记住,当您调用 return 时"。你想在那里表达什么?您是在暗示 OP 在错误的地方有一个 return 吗?哪一个?诚然,您的版本效率更高,但恕我直言,我们实际上还不知道 OP 的实际问题是什么。
  • 对不起,我不够清楚,但它引用了我在代码中调用 return 以避免 else 语句并跳出 for 循环的事实,所以我认为重要的是说明它的作用。
【解决方案2】:

应该使用的逻辑是 1.读取两个字符串 2.获取两个字符串的长度 3.如果 两个字符串的长度不相等则返回不匹配 别的 逐个字符比较两个字符串 * 如果字符不同 返回不匹配 * 别的 返回字符串匹配

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多