【问题标题】:Can't execute inner function strlen无法执行内部函数 strlen
【发布时间】:2019-09-05 14:13:11
【问题描述】:

我的任务是使用函数查找 C 风格字符串的长度。我确实解决了这个问题,但是当我通过调试器传递我的代码时,我发现了一些奇怪的事情。当函数完成它的工作并返回给我一个数字时,就在 cout

#include "pch.h"
#include <iostream>
using namespace std;

unsigned strlen(const char *str)
{
    unsigned x = 0;
    while (str[x] != 0) x++;
    return x;
}

int main()
{
    // Test 1
    const char* str1 = "How do you do";
    if (strlen(str1) == 13)
        cout << "Test 1 passed" << endl;
    else cout << "Test 1 failed" << endl;
    // Test 2
    const char* str2 = "";
    if (strlen(str2) == 0)
        std::cout << "Test 2 passed" << std::endl;
    else std::cout << "Test 2 failed" << std::endl;
    // Test 3
    const char* str3 = "This is stepik.org";
    if (strlen(str3) == 18)
        std::cout << "Test 3 passed" << std::endl;
    else std::cout << "Test 3 failed" << std::endl;
    const char* str4 = "Russian Federation";
    if (strlen(str4) == 18)
        std::cout << "Test 4 passed" << std::endl;
    else std::cout << "Test 4 failed" << std::endl;
    const char* str5 = "Russia";
    if (strlen(str5) == 6)
        std::cout << "Test 5 passed" << std::endl;
    else std::cout << "Test 5 failed" << std::endl;
}

【问题讨论】:

  • 我不清楚你到底在问什么。听起来你走进了operator&lt;&lt;,对在那里发现的东西感到困惑。能详细点吗?
  • @FrançoisAndrieux 实际上很清楚 - OP 看到 cout 调用他的 strlen 版本。
  • @SergeyA 好的,我现在明白了。虽然我仍然不确定这个问题是否清楚。如果没有你的解释,我不会猜到这是这个问题。但我很高兴有人能够理解并回答它。

标签: c++


【解决方案1】:

您做了坏事 - 您使用了标准库中的名称 (strlen) 作为您自己的函数的名称。实际上,您已经超越了它,并为所有麻烦敞开了大门。这个程序格式不正确。

实际上,coutchar* 作为参数将确定字符串的长度,调用 strlen,这恰好是您的函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 2012-03-15
    相关资源
    最近更新 更多