C++ 字的字节返回的值比它应该的值少一个
我的教授让我们制作自己版本的函数mystrcat、mystrlen和mystrcopy。我遇到了一个问题,单词返回的字节数不正确。或者,更确切地说,我认为是这样 短语:你好,世界,如果我没有错,应该返回13字节吗?例如: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
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;