C语言结构体数组成员怎么赋值?

要给stu[0].name赋值该怎么写啊?我这样写是错的。
typedef struct student
{int num;
char name[8];
}st;

void infor(st stu[N])
{stu[0].name="aa";
stu[1].name="bb";
...
}

intmain(void){

structstudentsbao={};

printf("%d,%s\n",bao.id,bao.name);//输出是4224528,空(应该是null)

//structstudentsbao={3,"123"};可以。第一种赋值方法

//strcpy(bao.name,"bao");//可以,

//printf("%d,%s\n",bao.id,bao.name);

//bao.name="bao";错误“stray'\351'inprogram”其他是乱码,

//bao.name[0]='a';

//bao.name[0]='/0';

//printf("%d,%s\n",bao.id,bao.name);

/*这样可以,*/

//chararr[10]="baobao";

////bao.name=arr;//error"assignmenttoexpressionwitharraytype"

//scanf("%s",bao.name);//可以,

//printf("%d,%s\n",bao.id,bao.name);

//所以scanf那一类函数都可以。

//还有就是memcpy函数也是可以的

return0;

}

扩展资料

C语言结构体数组的直接赋值及数组的长度计算:

#include<stdio.h>

//自定义一个字符串的结构体,包含字符串和字符串长度两个变量

typedefstructStr{

charch[100];

intlength;//char数组(字符串)的长度

}myStr;

//刚开始声明变量时每个变量的字符串长度length都为0

//这里以长度为10的数组为例,数组长度是1000

//对第0个到第9个结构体数组的长度同时赋值为0

myStrmyStr1[10]={

[0...9]={

.length=0,

}

};

intmain(){

inti;

for(i=0;i<10;i++){

printf("%d\n",myStr1[i].length);

}

return0;

}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-03-04
给出一下代码,其中使用strcpy函数,头文件为#include<string.h>。
其用法为strcpy(字符数组,需要拷贝的字符串);
#include <iostream>
#include <cstring>
using namespace std;
struct stu
{
char name[8];
char snum[9];
}st[10];
int main()
{
strcpy(st[0].name,"sss");//在结构体中对字符型数组赋值通常是用strcpy函数
strcpy(st[0].snum,"alala");
cout<<st[0].name<<endl;
cout<<st[0].snum<<endl;
return 0;
}本回答被网友采纳
第2个回答  2009-04-08
strcpy(stu[0].name,"aa");本回答被提问者采纳
相似回答