C++ 字的字节返回的值比它应该的值少一个

C++ 字的字节返回的值比它应该的值少一个,c++,strlen,strcat,C++,Strlen,Strcat,我的教授让我们制作自己版本的函数mystrcat、mystrlen和mystrcopy。我遇到了一个问题,单词返回的字节数不正确。或者,更确切地说,我认为是这样 短语:你好,世界,如果我没有错,应该返回13字节吗?例如: const char char_literal[] = { 'H', 'E', 'L', 'L', 'O', ' ', 'W', 'O', 'R', 'L', 'D', '!', '\0' }; // 1 2 3 4 5 6 7

我的教授让我们制作自己版本的函数mystrcat、mystrlen和mystrcopy。我遇到了一个问题,单词返回的字节数不正确。或者,更确切地说,我认为是这样

短语:你好,世界,如果我没有错,应该返回13字节吗?例如:

const char char_literal[] =
   { 'H', 'E', 'L', 'L', 'O', ' ', 'W', 'O', 'R', 'L', 'D', '!', '\0' };
  //  1    2    3    4    5    6    7    8    9    10   11   12   13 
我编写了函数myStrLen,它将{'H','E','L','L','O','}返回为6,但是因为它是单独的,所以在末尾应该有一个'\0',对吗? 那么我应该返回I+1还是6正确


如果您的教授告诉您编写一个行为完全相同的函数,那么它将不计算字符串终止字符:

std::size\u t strlen const char*str

返回给定字节字符串的长度,即 字符数组中的字符,其第一个元素由 str不超过且不包括第一个空字符


因此,返回i是正确的,除了原始strlen接受一个const输入参数并返回一个size\u t…

之外,如果教授告诉您编写一个行为完全相同的函数,那么它将不计算字符串终止字符:

std::size\u t strlen const char*str

返回给定字节字符串的长度,即 字符数组中的字符,其第一个元素由 str不超过且不包括第一个空字符


所以返回i是正确的,除了原始strlen接受一个const输入参数并返回一个size\u t…

strlen不计算空终止符。告诉教授他应该教std::string。不同意。老师应该诚实地教授C。不需要问我们。您可以简单地将结果与实际strlen返回的值进行比较。或者,更好的是,用这些来补充你的正规教育。C++是一个充满欢乐的世界。只是学术界还没有收到备忘录。斯特伦没有计算空终止符。告诉你的教授他应该教std::string。不同意。老师应该诚实地教授C。不需要问我们。您可以简单地将结果与实际strlen返回的值进行比较。或者,更好的是,用这些来补充你的正规教育。C++是一个充满欢乐的世界。只是学术界还没有收到备忘录。
int myStrLen(char stringInput[]){
    for(int i = 0; ; i++){
        if(stringInput[i] == '\0'){
            return i;