我正在研究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個字符的空間,那麼空字符在哪裏?你已經填滿了它。 –