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

c语言的结构体类型的长度怎么求?求高手帮忙#include<stdio.h>#include<string.h>structstudent//结构体类型学生属性学号姓名钱... 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?
展开
 我来答
sinomchen
2013-11-11
知道答主
回答量:14
采纳率:0%
帮助的人:4.1万
展开全部
输出2是正确的,原因如下:
strlen()是找出字符数组当中‘\0’(00H)前面有几个字符。

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

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

楼主要的长度计算Length=sizeof(card)/sizeof(struct student);
cthawdf
2012-06-11
知道答主
回答量:7
采纳率:0%
帮助的人:3.8万
展开全部
strlen() 不能对结构求长度吧 会报参数比匹配错误的 用sizeof()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tattackor
推荐于2016-09-02 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:891万
展开全部
结构体数组的长度计算方法和普通数组相同。
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乐酷科技
2012-06-09 · TA获得超过1906个赞
知道小有建树答主
回答量:1067
采纳率:50%
帮助的人:624万
展开全部
编译不通过啊 i=strlen(card);
这一步有问题的吧 你自己运行通过了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tseug8271
2012-06-09 · TA获得超过1498个赞
知道小有建树答主
回答量:745
采纳率:100%
帮助的人:366万
展开全部
sizeof
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式