骨头坠羽毛 发表于 2023-12-12 23:16:51

C++指针

实现使用函数mystrlen()统计一个字符串的长度,主函数需用到指针
int mystrlen(char *str)

FishC 发表于 2023-12-12 23:17:23

当我们使用指针来处理字符串时,可以通过指针的方式逐个访问字符串中的字符,直到遇到字符串的结束符'\0'。我们可以利用这个特点来实现统计字符串长度的函数。

下面是一个使用指针实现统计字符串长度的示例代码:

#include <iostream>

int mystrlen(char *str) {
    int count = 0;
    // 使用指针来逐个访问字符,直到遇到字符串结束符'\0'
    while (*str != '\0') {
      count++;
      str++;// 指针向后移动一个位置
    }
    return count;
}

int main() {
    char str[] = "Hello, World!";
    int length = mystrlen(str);
    std::cout << "The length of the string is: " << length << std::endl;
    return 0;
}

在`mystrlen()`函数中,我们用指针`str`来逐个访问字符,每次循环迭代时,将指针向后移动一个位置,直到遇到字符串结束符`'\0'`为止。同时,我们使用`count`变量来记录字符的个数,最后返回`count`作为字符串的长度。

在主函数中,我们定义了一个字符串`str`,并调用`mystrlen()`函数来统计其长度,并输出结果。

注意,在C++中,字符串是以字符数组的形式存储的,所以我们可以直接将字符串作为参数传递给`mystrlen()`函数。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

骨头坠羽毛 发表于 2023-12-12 23:23:06

FishC 发表于 2023-12-12 23:17
当我们使用指针来处理字符串时,可以通过指针的方式逐个访问字符串中的字符,直到遇到字符串的结束符'\0'。 ...

如果要求是键盘输入这个字符串呢?我尝试过这个方法,好像是不行的

FishC 发表于 2023-12-12 23:23:22

骨头坠羽毛 发表于 2023-12-12 23:23
如果要求是键盘输入这个字符串呢?我尝试过这个方法, ...

如果要从键盘输入字符串并计算其长度,可以使用C++中的std::cin来实现。下面是修改后的代码示例:

#include <iostream>

int mystrlen(const char *str) {
    int count = 0;
    while (*str != '\0') {
      count++;
      str++;
    }
    return count;
}

int main() {
    char str; // 假设字符串长度不超过100个字符

    std::cout << "请输入一个字符串: ";
    std::cin >> str;

    int length = mystrlen(str);
    std::cout << "字符串长度为: " << length << std::endl;

    return 0;
}

在这个示例中,我们声明了一个字符数组str,用于存储从键盘输入的字符串。使用std::cin来读取用户输入,并将其存储到str数组中。然后调用mystrlen函数来计算字符串的长度,并输出结果。请注意,这里假设字符串的长度不超过100个字符,你可以根据实际需要调整数组大小。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

骨头坠羽毛 发表于 2023-12-12 23:26:27

FishC 发表于 2023-12-12 23:23
如果要从键盘输入字符串并计算其长度,可以使用C++中的std::cin来实现。下面是修改后的代码示例:



#include <iostream>
using namespace std;

int mystrlen(char *str)
{
        int count=0;
    while (*str!='\0')
        {
      count++;
      str++;
    }
        return count;
}

void main()
{
        char a,*p=a;
        cout<<"请输入一个字符串:";
        cin>>*p;
        cout<<"字符串长度为"<<mystrlen(p)<<endl;
        system("pause");
}
这样运行结果一直是63

FishC 发表于 2023-12-12 23:26:44

骨头坠羽毛 发表于 2023-12-12 23:26
#include
using namespace std;

int mystrlen(ch ...

您的代码中存在一些错误和不完整的部分。首先,在`main()`函数中,您定义了一个字符变量`a`,但没有为其赋值,导致指针`p`指向未知的内存地址。此外,在输出`*p`之前,应该使用`cin`来接收用户输入的字符串。最后,在`main()`函数结束前,你应该返回一个整数值。

下面是对代码的修正和完善:

#include <iostream>
using namespace std;

int mystrlen(const char *str){
    int count = 0;
    while (*str!='\0') {
      count++;
      str++;
    }
    return count;
}

int main() {
    char a; // 假设字符串长度不超过100个字符
    cout << "请输入一个字符串: ";
    cin >> a;
    int length = mystrlen(a);
    cout << "字符串的长度为: " << length << endl;
   
    return 0;
}

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: C++指针