只是学习..我无法理解我做错了什么 我只是尝试计算字符串中的char数。
while循环没有结束 - 无限循环
这是代码
int main() {
char buffer[255] = { 0 };
sprintf_s(buffer, "hello world");
char* ptr = buffer;
int count = 0;
while (ptr != null)
{
count++;
ptr++;
}
std::cout << count << std::endl;
std::cin.get();
}
顺便说一句 - 我不想使用strlen或一些内置函数。
答案 0 :(得分:5)
理论上你的指针永远不会为空。
您正在寻找的是检查它是否指向字符串的空终止符,这是非常不同的,并通过例如检查来检查*ptr == '\0'
。请注意使用解除引用运算符*
来获取ptr
当前指向的值。
实际上,指针有时会达到其大小范围的结尾,溢出并变为零,这是一个空指针。但是,如果您使用的是64位系统,可能距离非常远,而且超出了字符串的末尾。