C语言中用结构体数组来接收结构体数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中用结构体数组来接收结构体数组相关的知识,希望对你有一定的参考价值。

代码如下:#include <stdio.h>struct f int num; char name[100]; int score[3];stu[3];struct s int num; char name[100]; int score[3];stu1[3];void print(struct s stu1[3]) int j; for(j=0;j<3;j++) printf("%d %s %d %d %d \n",stu1[j].num,stu1[j].name,stu1[j].score[0],stu1[j].score[1],stu1[j].score[2]);main() int i; for(i=0;i<3;i++) printf("please input num name and three scores of this student:\n"); scanf("%d %s %d %d %d",&stu[i].num,&stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]); printf("the list of stu[] is following:\n"); print(struct f stu[3]);/*问题就是这里,总是提醒[Error] C:\Users\fs\Documents\C-Free\Temp\未命名1.cpp:29: error: expected primary-expression before "struct"*/

用 元素 赋值 元素,
相同结构体 元素 可以互相直接赋值,
struct names a, b;
...
a = b;
参考技术A 在调用函数时,结构体用结构体的名字就可以了[str1]接受用结构体来接收就OK

c语言结构体类型数组长度

c语言的结构体类型的长度怎么求?求高手帮忙

#include<stdio.h>
#include<string.h>

struct student //结构体类型 学生属性 学号 姓名 钱 挂失信息

long int num;
char name[15];
int money;
int check;
;

main()

int i=0;
struct student card[50];

card[0].num=1000;
card[0].money=500;
card[0].check=0;

card[1].num=1000;
card[1].money=500;
card[1].check=0;

card[2].num=1000;
card[2].money=500;
card[2].check=0;

i=strlen(card);
printf("%d",i);


为什么这段代码输出总是2?

输出2是正确的,原因如下:
strlen()是找出字符数组当中‘\0’(00H)前面有几个字符。

你的
card[0].num=1000;
转换为字符型(数据格式为小端对齐)数组之后为E8H 03H 00H 00H

第三个字符为‘\0’,所以函数认为只有两个字符。

楼主要的长度计算Length=sizeof(card)/sizeof(struct student);
参考技术A strlen() 不能对结构求长度吧 会报参数比匹配错误的 用sizeof() 参考技术B 结构体数组的长度计算方法和普通数组相同。
1、C语言中,定义数组后可以用sizeof命令获得数组的长度(即可容纳元素个数)。但是通过传递数组名参数到子函数中,以获得数组长度是不可行的,因为在子函数当中,数组名会退化为一个指针。
2、例如:
int data[4],length;
length=sizeof(data)/sizeof(data[0]); //数组占内存总空间除以单个元素占内存空间大小,即等于元素个数
printf("length of data[4]=%d", length ); //输出length of data[4]=4
参考技术C 编译不通过啊 i=strlen(card);
这一步有问题的吧 你自己运行通过了?
参考技术D sizeof

以上是关于C语言中用结构体数组来接收结构体数组的主要内容,如果未能解决你的问题,请参考以下文章

C语言中,return语句怎么样返回一个数组?

C语言中的结构体数组

c语言中返回结构体数组

C语言结构体数组的定义

c 语言结构体中包含结构体 是数组吗

C语言如何返回结构体数组