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语言
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
//自定义一个字符串的结构体,包含字符串和字符串长度两个变量
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)用字符常量逐个初始化数组。例如:
char a[8]={'i','l','o','v','e','y','o','u'};
把8个字符依次分别赋给c[0]~c[7]这8个元素。
如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。如果花括号中提供的初值个数(即字符个数)大于数组长度,则出现语法错误。
如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即'\0')。
如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。
例如:char c[]={‘c’,‘’,‘p’,‘r’,‘o','g','r','a','m'};
这时c数组的长度自动定为9。也可以定义和初始化一个二维字符数组,例如:
char diamond[5][5]={{'','','#'},{'','#','','#'},{'#','','','','#'},
{'','#','','#'},{'','','#'}};用它代表一个菱形的平面图形。
(2)字符串常量初始化数组。例如:
char c[]={‘c’,‘’,‘p’,‘r’,‘o','g','r','a','m'};
可写为:char c[]={"C program"};
或去掉{}写为:char c[]="C program";
注意:此时数组c的长度不是9,而是10。因为字符串常量的最后由系统加上一个'\0'。上面的初始化与下面的初始化等价。
char c[]={‘c’,‘’,‘p’,‘r’,‘o','g','r','a','m','\0'};
其定义的一般形式是:char数组名[数据长度]
例如:
char c[10];
c[0]='I';c[1]='';c[2]='l';c[3]='o';c[4]='v';c[5]='e';c[6]='';c[7]='y';c[8]='o';c[9]='u';
以上定义了c为字符数组,包含10个元素。
由于字符型数据是以整数形式(ASCII代码)存放的,因此也可以用整型数组来存放字符数据,例如:
int c[10];
但这时每个数组元素占2个字节的内存单元,浪费存储空间。
字符数组也可以是二维或多维数组,例如:
char c[5][10];
即为二维字符数组。
初始化
字符数组的初始化与数值型数组初始化没有本质区别。但它除了可以逐个给数组元素赋予字符外,也可以直接用字符串对其初始化。
输入输出
字符数组的输入
(1)用getchar()或scanf()的'%c'格式符对数组进行字符赋值。例如,对于数组a[10]:用getchar()赋值:
for(i=0;i<10;i++)
a<i>=getchar();
用scanf()赋值:
for(i=0;i<10;i++)
scanf("%c",&a<i>);
(2)用scanf()的'%s'格式对数组赋值。还是对于数组a[10]:
scanf("%s",a);
或
scanf("%s“,&a[0]);
输入”C program“并回车时,a数组会自动包含一个以”\0“结尾的字符串”C program“。
字符数组的输出
(1)用putchar()或printf()的‘%c’格式符对数组进行字符赋值。例如,对于数组a[10]:用putchar()赋值:
for(i=0;i<10;i++)
a<i>=putchar();
用printf()赋值:
for(i=0;i<10;i++)
printf("%c",a<i>);
输出结果为:
c program
(2)用printf()的'%s'格式对数组赋值。还是对于数组a[10];
printf("%s",a);
输出结果为:
c program
参考资料:
百度百科——字符数组
1、首先打开vs2010软件,新建一个项目,如图所示。
2、里面包含头文件,如图所示。
3、然后输入入口函数main。
4、接着定义一个结构体,声明结构体变量,如图所示。
5、然后给结构体里面的成员变量赋值。
6、最后打印结构体成员,输出结果就完成了。
你程序中的那种赋值方式只能在数组定义的时候赋值,定义完成后,就要一个一个的赋值。比如:s.a[0] = 1;s.a[1] = 2;如果赋值有一定规律的话,可以用for循环;如果赋的值一样的话,可以用 memset(s.a,0,sizeof(s.a));,memset一般用于数组初始化和清零。