给结构体数组成员赋值,给结构体数组成员赋值的方法

http://www.itjxue.com  2023-01-07 18:13  来源:未知  点击次数: 

结构体数组内的数组的赋值

#include

#include

#include

struct

student

{

int

num;

float

score[5];

float

ave;

};

void

main()

{

struct

student

stu[4];

int

i,j,n;

float

f;

memset(stu,

0,

sizeof(struct

student)

*

4);

printf("Please

input

the

number

and

scores

of

every

student:\n");

for(i=0;i4;i++)

{

printf("student

%d:",i+1);

scanf("%d",n);

stu[i].num

=

n;

for(j=0;j5;j++){

scanf("%f",f);

stu[i].score[j]

=

f;

stu[i].ave

+=

f;

}

stu[i].ave

/=

5.0f;

}

}

/*上面的程序就没问题,注意要将结构体用memset命令初始化,内存清零*/

C语言,结构体中的数组怎么赋值,?

(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;ilt;10;i++)

alt;igt;=getchar();

用scanf()赋值:

for(i=0;ilt;10;i++)

scanf("%c",alt;igt;);

(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;ilt;10;i++)

alt;igt;=putchar();

用printf()赋值:

for(i=0;ilt;10;i++)

printf("%c",alt;igt;);

输出结果为:

c program

(2)用printf()的'%s'格式对数组赋值。还是对于数组a[10];

printf("%s",a);

输出结果为:

c program

参考资料:

百度百科——字符数组

C语言里如何给结构体成员(一个数组)赋汉字值?

struct Type //定义了一个 Type 的数据类型

{

char a[15] ; //定义了一个数组成员,最多可输入14个字符

}

Type s ; //用 Type 类型定义一个结构体变量 s ;

s.a = " abcdef " ; //给结构体变量 s 赋值为 "abcdef" 。如果是想自己输入的话:gets( s.a ) ; 或者 scanf(" %s " , s,a ) ; //因为是数组,所以输入时候要记住的是 s.a前面是不加地址符的。希望你全明白了,O(∩_∩)O~呵呵。

结构体中的数组如何赋值

设结构体struct A:

#define NAME_SIZE????? 20

struct A{

int val;

char name[NAME_SIZE];

};

// 定义2个结构体对象

A a1, a2;

赋值方法

1. 利用库函数memcpy (头文件string.h), 可以对结构体对象整体赋值.

memcpy(a2, a1, sizeof a2); // = a2 = a1

2. 对每个成员单独进行赋值

a2.val = a1.val;

for (int i = 0; i NAME_SIZE; ++i)

a2.name[i] = a1.name[i];

结构体成员数组赋值?

你把scanf("%f",((s+i)-score[j]));这个语句改为:

scanf("%f",(s[i].score[j]));

这样试试。

如何给结构体数组赋初值?

举例如下:

char a[10];

1、定义的时候直接用字符串赋值

char a[10]="hello";

注意:不能先定义再给它赋值,如

char a[10];

a[10]="hello";

这样是错误的!

2、对数组中字符逐个赋值

char a[10]={'h','e','l','l','o'};

3、利用strcpy

char a[10];

strcpy(a, "hello");

易错情况:

1、char a[10]; a[10]="hello";//一个字符怎么能容纳一个字符串?况且a[10]也是不存在的!

2、char a[10]; a="hello";//这种情况容易出现,a虽然是指针,但是它已经指向在堆栈中分配的10个字符空间,现在这个情况a又指向数据区中的hello常量,这里的指针a出现混乱,不允许!

还有:不能使用关系运算符“==”来比较两个字符串,只能用strcmp() 函数来处理。

(责任编辑:IT教学网)

更多