我正在尝试计算 char 数组中的内容,直到 null 终止,但每次编译时,我都会得到一个比我的数组大的数字
I am trying to count the contents in a char array till the null-termination, but each time I compile i get a number larger than my array
无论我为数组的大小设置什么值,我编写的函数都会返回一个大一定程度的值。
我已经尝试过,while(*str++)并从while循环中删除str++,而不是现在那里。
我正在使用Visual Studio 2019。
int strlen(char* str)
{
int i = 0;
while (*str != ' ')
{
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 放在末尾,但如果您希望字符串具有终端 null,则必须自己将其放在那里。
char line[2];
char* v = line;
line[0]='x';
line[1]= ' ';
数组的内容未定义。 您不会用任何字符填充任何数组,更不用说使用任何 null 终止符了。 对未正确以 null 结尾的字符数组调用strlen()
是未定义的行为。
相关文章:
- 在将数字随机生成为数组期间从内存输出随机数的数组
- 如何计算数组中元素的位数?(不是数组的长度),并计算其数字的总和
- 数组/c++中的大量数字
- 遍历并行数组以确定C++中的最大数字
- 整数区间(或 int 数组)中每个数字的出现次数
- 如何在 C++ 中将文件中的逗号分隔数字读取到数组中?
- 将随机生成的数字添加到数组 + 对这些数组求平均值
- 遇到此问题时遇到困难:允许用户输入数组的值并使用 for,而循环也输出输入的最大数字
- 获取 2D 数组 c++ 中的所有数字对
- 为什么使用数组元素查找最大数字的程序不起作用?
- 如何从向量或数组中选择最常见的数字?(前五名)C++
- 如何从保存在 Java 中C++的字节数组中读取数字?
- 以十为基数的数字到布尔数组,该数组要求二进制/基数为 2 的数字
- C++ 检查结果数组中有多少次数字
- 如何在不使用 C++ 中的数组或函数的情况下查找 N 位数字的所有排列
- 如何在C++中有效地将数字值重新分配给字符数组
- 查找数组中的最小数字
- 查找数组中重复(重复)数字的索引
- 我必须找到给定数组中所有数字的周期,就像有很多解决方案,但数组的大小是 10^5
- 是否可以将数组数字作为函数来执行?