怎的给链表结构体中的字符串数组直接赋值

怎样给链表结构体中的字符串数组直接赋值
我有一个链表文件,其结构体定义为下:
struct student{
int stu_id;
char name[20];
int age;
struct student *next;
};
我可以定义一个struct student 的变量,直接赋值,例如
struct student a;
a.age = 18;
a.stu_id = 01;
问题来了,怎样给a.name这个字符串直接赋值呢?不想通过 scanf语言来赋值,我想知道有可以直接如上直接赋值的方法不?另外,a.name是一个指向字符串的指针吗?
------解决思路----------------------
字符数组就用 strncpy
------解决思路----------------------
引用:
字符数组就用 strncpy

+
------解决思路----------------------
没有这样的方法。
你的企图是
a.name = "hello";

但是,name是数组类型,串字面值"hello"也是数组类型。
数组是不可修改的左值。
------解决思路----------------------
数组怎么赋值就怎么赋值,没什么区别。
------解决思路----------------------
我记得结构体赋值一般只能赋值一次(就是最开始的时候),程序在运行的时候是用不上的,比如楼上说的strnpy()和 memcpy()都可以用的上
------解决思路----------------------
strncpy 是 C语言的库函数之一,来自 C语言标准库,
定义于 string.h,char *strncpy(char *dest, char *src, int n),
把src所指由以'\0'结束的字符串的前n个字节复制到dest所指的数组中,并返回指向dest的指针。
怎的给链表结构体中的字符串数组直接赋值
------解决思路----------------------
a.name 表示字符数组的首地址,是个常量所以不能a.name="hello" 你可以使用strcpy(a.name,"hello") 也可以使用sprintf实现
------解决思路----------------------
C/C++的数组不能直接赋值,只能拷贝,可以用memcpy,char[]也可以用strcpy/strncpy(最好用strncpy,更安全):
void * memcpy ( void * destination, const void * source, size_t num );
char * strncpy ( char * destination, const char * source, size_t num );
char * strcpy ( char * destination, const char * source );