我正在研究C中的strlen()
函数,我看到一个函数,这个函数返回diffirent的值。如果数组的容量已满,则返回不正确的结果。如果数组容量不足,则返回true结果。 我在问是什么原因?
非常感谢所有读者。
即功能为什么函数根据容量返回不同的值
int myStrlen(char *s)
{
char *start;
start = s;
while (*s != 0)
{
++s;
}
return s - start;
}
和主
int main()
{
char x[4] = "What";
printf("%d\n", myStrlen(x));
return 0;
}//Output: 21
另一主
int main()
{
char x[5] = "What";
printf("%d\n", myStrlen(x));
return 0;
}//Output: 4
C不支持_methods_,只有_functions_。 – Olaf
并使用调试器来查看会发生什么。提示:你的第一个'main'调用未定义的行为。 – Olaf
如果你的char缓冲区只有4个字符的空间,那么空字符在哪里?你已经填满了它。 –