c语言结构体中的一个char数组怎么赋值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言结构体中的一个char数组怎么赋值?相关的知识,希望对你有一定的参考价值。
这是我写的
struct student
int x;
char name[10];
;
void main()
student st;
st。name= 这里能不能直接赋值 一个字符串 “123”;? 如果不用scranf()
(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
参考资料:
百度百科——字符数组
常用两种措施:
在声明结构体变量时初始化,如——
//#include "stdafx.h"//If the vc++6.0, with this line.#include "stdio.h"
struct stu
int x;
char name[10];
;
int main(void)
struct stu s=8,"123";//这样初始化
printf("%d %s\\n",s.x,s.name);
return 0;
向数组里直接拷贝字符串,如——
#include "stdio.h"
#include "string.h"
struct stu
int x;
char name[10];
;
int main(void)
struct stu s;
strcpy(s.name,"abcd");//向name拷贝字符串
s.x=128;
printf("%d %s\\n",s.x,s.name);
return 0;
struct emu=
int i;
char ch[50];
那么对char ch赋值可以
for(j=0;j<=49;j++) emu.ch[j]=j;
或者一个字符一个字符的赋值,比如emu.ch[0]='a';
对字符串的赋值不能直接等于,要用函数strcpy,
如何对结构体中的数组进行一次性全部赋值?谢谢,比如就是这个意思 b.a[]=,,,,;
1、在定义的时候初始化。2.把这个数组再放到一个内部结构体中,这样就可以一次性赋值。例如:
struct
struct
int a[20];
aa;
int c;
b,d;
b.aa=d.aa//将d中的a数组复制到b中的a数组。 参考技术A 楼上的误导人啊,数组不可以这样赋值的
struct
int data;
int a[4];
c;//定义结构体C
c.a=1,2,3,4;追问
那这也不对啊,我试了,有错误,我是用的vc6.0 xp
追答#include
#include
struct c //注意这里,以前写的也不对
int data;
int a[4];
;//定义结构体C
int main()
int i,b[4]=1,2,3,4;//可以这样初始化
int m[4];
// m[4]=1,2,3,4;/*这句错了,定义好的数组不能这样赋值了, 去掉可以运行*/
c test;
for(i=0;i<4;i++)
test.a[i]=i;
for(i=0;i<4;i++)
printf("%d",test.a[i]);
system("pause");
return 0;
//上面是我测试好的代码,哎,不好意思啦,结构体都没定义对,还有,数组赋值还要一个个来
数组赋值不可以整体一次性定义吗?
追答不行的,只有初始化的时候可以整体赋值
要是真的想整体赋值的话,你可以自己写个数组类
不过我感觉多余了哎
标准库什么的我不太懂,不好说
额,你可以去网上查查看的
嗯,谢谢啊,上次我们老师问了这个问题,然后就不知道,就问了……那我查出来了,给你发过去,
追答好啊,嘿嘿
追问没有找到,可能不行吧。下次我问老师咋干的。
追答好的啊,呵呵
本回答被提问者和网友采纳以上是关于c语言结构体中的一个char数组怎么赋值?的主要内容,如果未能解决你的问题,请参考以下文章