c语言编程-C语言关于使用结构体数组的问题

问题描述

C语言关于使用结构体数组的问题

#include
struct Student
{
int mun;
long char name[5];
int score[3];
struct Student *next;
};
int main()
{
struct Student a,b,c,*head,*p;
a.mun=10101;a.name="张丹";a.score[0]=89;a.score[1]=95;a.score[2]=91;
b.mun=10103;a.name="彭浩";b.score[0]=99;a.score[1]=89;a.score[2]=90;
c.mun=10105;a.name="张磊";b.score[0]=85;a.score[1]=95;a.score[2]=97;
head=&a;
a.next=&b;
b.next=&c;
c.next=NULL;
p=head;
do
{
printf("%ld %s %d %d %d %dn",p->mun,p->name,p->score[0],p->score[1],p->score[2]);
p->next;
}while(p!=NULL);
return 0;
}
在名字赋值那里报错left operand must be l-value,求解释为什么,要怎么修改。

解决方案

第一,char类型只有unsigned char和char两种类型,long是不能修饰char类型的;
第二,对于数组来说,数组名是一个地址值,不能作为左值,只能作为右值;一个汉字在程序中占2或者4个字节,这是根据汉字的编码规则和编译器来确定的,如果要输入汉字,最好用指针的方式。
第三,写程序的时候要细心哦,“b.mun=10103;a.name="彭浩";b.score[0]=99;a.score[1]=89;a.score[2]=90;b.mun=10103;a.name="彭浩";b.score[0]=99;a.score[1]=89;a.score[2]=90;p = p->next”;
第三,给你一点小建议,遇到问题了,尽量自己查资料,调试,分析错误,这样收获比较大;希望对你有用!

解决方案二:

字符串赋值用strcpy!

解决方案三:

把long char name[5]改为char *name;这样就可以了,望采纳!

解决方案四:

对字符串数据直接赋值不对,a.name代表的是字符数组首地址,是常量,不是变量,所以提示不是左值的错误。解决办法楼上已经提供,在此不再多说,希望您能理解!

时间: 2024-07-28 12:49:08

c语言编程-C语言关于使用结构体数组的问题的相关文章

编程c语言-编程小问题,关于结构体

问题描述 编程小问题,关于结构体 用结构体类型数组进行程序设计.有五个学生,每个学生的信息包括:学号,姓名,三门课的成绩和平均成绩.从键盘输入每个学生的学号,姓名和三门课的成绩,计算每个学生的平均成绩,计算并输出总平均成绩,求出最高分学生,并输出其信息(姓名和平均成绩). 实验步骤 ① 用一个函数输入五个学生的数据信息: ② 用一个函数求每个学生的平均成绩: ③ 用一个函数找出最高分的学生: ④ 主函数中调用相关函数,并输出总平均成绩和最高分学生的信息. 这是我写的代码 #include #de

C语言及程序设计进阶例程-13 结构体数组及其应用

贺老师教学链接  C语言及程序设计进阶 本课讲解 结构体数组应用举例 #include <stdio.h> #include <string.h> typedef struct { char name[20]; int count; } Person; int main( ) { Person person[3]= {{"Li",0},{"Zhang",0},{"Fun",0}}; int i,j; char name[2

编程c语言-vs2013中如何定义一个结构体该结构体定义一个结构体数组 结构体数组中包含一个链表

问题描述 vs2013中如何定义一个结构体该结构体定义一个结构体数组 结构体数组中包含一个链表 这样定义对么 编译时报错 缺少:在*前面 这是哪错了啊 请高手指点指点 解决方案 你把两个结构体的定义调换一下次序就没问题啦,要先声明或定义结构体:Station,才能使用 解决方案二: 因为struct Station是在struct Train结构体之后才定义的,所以你要在这之前先声明一下struct Train 解决方案三: 做一个前向声明,或者调换两个结构位置都可以. 解决方案四: 结构体数组

c语言-C语言typedef问题与结构体数组问题

问题描述 C语言typedef问题与结构体数组问题 typedef struct students{ long code; char *name; float score[3]; float sum;}cla[40];这样定义是什么意思呢?cla代替了struct students?正确的写法是怎么样的 解决方案 定义了一个班级类型,它代表40个学生,cla代替了students[40]以后可以定义变量cla cla1;cla1就是一个40个students组成的数组 语法上没问题,不过个人觉得

c语言-C语言结构体数组与顺序表的问题

问题描述 C语言结构体数组与顺序表的问题 #define DataType struct students cla[3] struct students { long code; char *name; float score[3]; float sum; }; typedef struct { DataType list[MaxSize]; int length; }SeqList; SeqList *t; 我要修改到list[0]里结构体数组cla[0]中的code元素,应该怎么写?? 下面

图片-C语言,请教关于结构体数组的问题

问题描述 C语言,请教关于结构体数组的问题 图中倒数第二行 scanf("%d",&G[i]); 结构体VNode中有两类元素int data 和ArcNode *firstarc 为什么"&G[i]"就是给结构体VNode中的data赋值? 解决方案 &G[i]和&G[i].data的地址相同,有的编译器允许这样使用. 解决方案二: C语言结构体数组赋值问题IOS开发---C语言-?结构体数组C语言中的结构体数组 解决方案三: 我想

C语言结构体数组同时赋值的另类用法

说到C语言结构体数组的同时赋值,许多人一想就会想到用以下的这种方法,咱们来写一个例子: #include <stdio.h> struct student { int a; int b ; int c ; }; struct student array1[1000] ; int main(void) { int i ; for(i = 0 ; i < 1000 ; i++) { array[i].a = 1 ; array[i].b = 2 ; array[i].c = 3 ; } fo

c语言-C语言中如何删除TXT文件中特定的结构体数组

问题描述 C语言中如何删除TXT文件中特定的结构体数组 用 r 打开文本文件a, 用a打开文本文件b,(临时文件) for{ fprintf 将a文件的数据存入fp: 判断是不是符合要删除的数据: 如果不是,将fp数据存入文件b; } 用 W 打开文件a,用r打开文件b, for{ fprintf fscanf } 生成之后打开文本文件a数据只有原本的第一条,其他的都不见了 求教 C语言中如何删除TXT文件中特定的结构体数据 解决方案 http://zhidao.baidu.com/link?u

c语言编程-C语言运行总是出问题。。。。

问题描述 C语言运行总是出问题.... #include #include #include #include //将一块内存数据写入文件中 使用的函数为:fwrite; #define NUM 2 typedef struct { char name[20]; int age; char email[50]; }person; //定义结构体 结构体名为person; void getinfor(person* pinfor) { printf("input name: "); ge