【发布时间】:2017-03-27 17:27:52
【问题描述】:
我试图掌握 char 数组来执行“字符串”操作,但我无法弄清楚这种行为。我基本上是在尝试实现 strlen 函数。
本质上,问题在于如果我分配:
char pwdToTest[4] = "ABCD";
然后我尝试遍历寻找'\0'的每个字符,我刚刚意识到最后没有'\0',而是在第五个内存位置(它可能是一个'\0\ 或以前测试中的其他内容),所以我无法检测到“字符串”的结尾。
这解决了这个问题:
char pwdToTest[5] = "ABCD\0";
创建“字符串”并分配值以便它可以在 strlen 或我自己的 strlen 实现中使用的正确方法是什么。
我的实现供参考:
int calLenCharArr(char *charArray)
{
int i = 0;
while (charArray[i] != '\0')
{
printf("%c %i\n",charArray[i],charArray[i]);
i++;
}
printf("lenth: %i", i);
return i;
}
【问题讨论】:
-
不,
char pwdToTest[5] = "ABCD";— 为您添加了'\0'。 -
字符串文字的末尾已经有一个隐含的
\0。但是你不要复制它,因为你将数组大小限制为4。不要指定大小,让它从文字中推导出来 -
此外:
char pwdToTest[] = "ABCD";- 为您设置大小(包括\0)。 -
感谢您的及时答复!!我现在明白了,即使 C 试图为我添加 \0,如果我限制数组的空间,它也无法做到:-)
标签: c arrays string initialization