【发布时间】:2021-10-12 22:28:39
【问题描述】:
如果需要,您可以在此处运行以下示例代码:
#include <stdio.h>
#include <string.h>
void foo(char *name);
char bar(char c);
int main(int argc, char **argv)
{
foo("Ashcroft");
return 0;
}
void foo(char *name)
{
printf("name = %s\n", name);
int name_length = strlen(name);
char code[name_length];
printf("length of name %d\n", name_length);
for (int i = 0; i < name_length; i++)
{
code[i] = bar(name[i]);
}
printf("length of code is %ld\n", strlen(code));
printf("name is %s\n", name);
}
char bar(char c)
{
return 'a';
}
问题
我希望length of code 与length of name 相同,
但不知何故,在 for 循环之后长度会发生变化。
输出
name = Ashcroft
length of name 8
length of code is 14
name is Ashcroft
更新
试过char code[name_length+1];,结果还是一样
【问题讨论】:
-
你知道空终止符是什么吗?
标签: c