C语言修改结构体中数据的问题

本人初学者一个,想问一下,我已经定义了结构体lib和 char name,
lib[0].name = "asd";
为什么不能这样操作?要求表达式是可修改的左值
定义了char name[20];

因为char型数组没有重载运算符=,不能对其进行直接复制字符串
可以借助strcpy函数完成,如strcpy(lib[0].name, "asd");就是将“asd”拷贝到lib[0].name中
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-11-21
数组有规定的, 一旦声明, 数组名不可修改
你你如果想那样赋值的话, 吧name的声明改成:
char * name;追问

不是改变数组名,是里面的内容……已经会了,谢谢你

关于C语言中函数修改结构体的值的问题
这个就是实参和形参的问题。可以直接传入指针。你说的typedef成指针是一种方式。也可以还是typedef struct xxx List;然后传入List*类型的参数。效果是一样的。

c语言结构体赋值错误,求改正,错误如下图,两次赋值其中一次为空值,没...
p指针在循环输入的时候没有跳转地址,所以两次赋值都是针对的stu[0]p++;\/\/放到循环里面

c语言结构体问题
printf ("%-6.2f%2c",stu[stuIndex].scores[i].score,32); \/\/printf ("%-6c%2c",stu[stuIndex].scores[i].level.32); } printf ("%-6.2f%2c",stu[stuIndex].totalScore,32); \/*总分*\/ printf ("%-6.2f%2c",stu[stuIndex].averageScore,32); \/*平均分*\/ printf ("%-8c%2c",st...

c语言中如何修改储存在文件的结构体内容中。小文件
从文件中读取结构体数据:fread(&a,sizeof(struct Student),1,fp);\/\/从fp文件中读取一个结构体数据,保存到a的地址里。

C语言如何修改const结构体内的变量
scanf("%d",&EXP.a1);scanf("%d",&EXP.a2);scanf("%d",&EXP.a3);然后从终端输入就可以修改变量的值了。这个方法可能不符合你的要求,要有更好的办法我再分享给你,不过既然是定义为const,那么最好不要随便修改,人家这么声明肯定是有意的!突然想到更好的办法了:int *p=(int *)&hello;p...

C语言,更改指定位置数据文件内容,求大神
你这里的student是结构体吧,这里使用open打开文件:void fun(student *stu,char *f_name,int id){int i = 0;int j = 0;int fd;fd = open(f_name, O_RDWR);for(i = 0;i<N ;i++){read(fd, stu, sizeof(student));if((stu->id) == id){(stu->grade1) = (stu->grade1...

用C语言结构体解决 “从键盘输入五个用户的数据,包括姓名和电话号码,要 ...
\/\/希望我的回答对你的学习有帮助#include <stdio.h>#include <string.h>struct Student{char Name[10];\/\/学生的姓名,使用字符数组存储,长度为 10char PhoneNumber[15];\/\/学生的电话号,使用字符数组存储,长度为 15}stu[5], temp;\/\/结构体数组,长度为 5,用来存放 5 个学生的信息\/\/临时...

c语言为什么无法修改结构体中的double
double需要用%lf输入输出.所以是 scanf("%lf",&book[0].price);printf("%.2lf",book[0].price);

C语言结构体成员变量的中字符串型数值型在一个scanf函数里输入的...
\/\/修改了一点,注意看说明 #include <stdio.h> #include <stdlib.h>struct stu{char name[10];int num;int age;char addr[15];}sa[3],sb[3],*pp,*qq;\/\/创建结构体类型struct stu的同时,定义结构体数组sa、sb,定义结构体指针变量 pp、qq。 int main(){FILE *fp;char ch;int i;if...

c语言怎么把文件中没有对齐的2列数据的放到一个结构体中
这个很简单,首先用fgets获取一行,然后用一个for循环遍历该行,在第一个空格或者TAB出记录位置并将其改为'\\0',然后break,这是该行就被切割成两段了,分别用strcpy复制到对应的地方就OK了

相似回答