给字符数组赋值的小问题

#include

void main()
{
char a[];
a[]={"serf"};
printf("%s",a);

}
一直报错,把大括号去掉也报错,不知道为什么?

#include <stdio.h>

int main()
{
char a[5]="serf";
printf("%s",a);
return 0;
}

或者

#include <stdio.h>

int main()
{
char a[][5]={"serf"};
printf("%s",a);
return 0;
}

char a[];这么写编译肯定不通过,因为数组在声明的时候需要给定元素个数,要么显式的给,那么隐式的给。否则编译器在编译的时候根本不知道到底要给数组分配多少个字节空间。
char a[] ;
a[] = "asdas";
就没有这种写法,
要么写
char a[] = "asdfa" ;
要么写
char a[STRSIZE] = "asad" ;

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^