无论我为数组大小设置什么值,我编写的函数都会返回一个更大的值。
我试过 while(*str++) 并从 while 循环中删除 str++,而不是现在的内容。
我正在使用 Visual Studio 2019。
int strlen(char* str)
{
int i = 0;
while (*str != '\0')
{
i++;
str++;
}
return i;
}
int main()
{
char line[1];
char* v = line;
char* s = new char[1];
cout << "for s " << strlen(s) << endl;
cout << "for v " << strlen(v) << endl;
}
最佳答案
您忽略了以空值终止您的字符串。您的函数正在遍历数组末尾并导致未定义的行为。一些字符串操作函数会将 null 放在末尾,但如果您希望您的字符串有一个终端 null,您必须自己把它放在那里。
char line[2];
char* v = line;
line[0]='x';
line[1]= '\0';
关于c++ - 我正在尝试计算 char 数组中的内容直到空终止,但每次编译时我得到的数字都大于我的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55930404/