struct employee
{
char name[20];
}emp;
void main()
{
emp.name[20]="John";
printf("%s\n",emp.name);
}
为什么这段代码没有输出?为什么不能直接初始化字符串数组?
第一:你的编译器应该警告你。如果您使用gcc
,请尝试使用
gcc -std=c11 -Wall -Wextra -pedantic
看看。
问题只是错误的语法。你指定你的字符串文字到emp.name[20]
这是21元的emp.name
。这个元素甚至不存在,它的类型是char
。
你想要的是这样的:
emp.name = "John"; // <- INVALID!!
但这不起作用,因为不幸的是 C 不允许分配给数组。您可以使用该函数strcpy
(字符串复制)来实现您想要的功能(包括string.h
):
strcpy(emp.name, "John");
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句