C语言 变成,在编程过程中,有时需要给结构体赋一个值,我想采用下面的这种赋值方式,但是总是出错,又不知道错在哪里,这个不是初始化,在定义了结构体之后,顺带赋一个值,从而初始化,这个我是知道的。
#include <stdio.h>
#include <stdlib.h>
#define NUM 50
struct film
{
char name[NUM]; //电影的名称
int score; //电影的评分
};
typedef film FILM;
int main(void)
{
FILM movie;
movie = {"GoldedFather",10};
printf("the name is %s and the score is %d .\n",movie.name,movie.score);
return 0;
}
编译过程中,总是 说 movie = {"GoldedFather",10}; 这一行有错误,
请问 错在了 哪里 ,该如何修改? 程序中 到底该怎样给 结构体 赋值? 谢谢!
typedef struct FILM movie;
没法这样赋值的,或者你在初始化的时候可以这样赋值.
初始化以后只能
strcpy(movie.name,"GoldedFather");
movie.score=10;
首先 我直接再vs2019上运行你的代码是可以运行成功的。
你可以百度构造函数,赋值构造函数,复制构造函数,以及相关的实现方法,重载等号的知识点,我是懒得写代码了,网上比较多~
改这样
#include <stdio.h>
#include <stdlib.h>
#define NUM 50
typedef struct film
{
char name[NUM]; //电影的名称
int score; //电影的评分
}FILM;
//typedef film FILM;
int main(void)
{
FILM movie= {"GoldedFather",10};
// movie = {"GoldedFather",10};
printf("the name is %s and the score is %d .\n",movie.name,movie.score);
return 0;
}
结构体的字符数组如果用等号,可以在定义的时候赋初始值:
char name[NUM] = "GoldedFather";
但是不能用“=”直接为字符数组直接赋值,可以写成:
movie = {{"GoldedFather"},10};
也可以用strcpy函数复制字符串:
strcpy(movie.name, "GoldedFather");
了解下 typedef 的用法就好了。
供参考:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NUM 50
struct film
{
char name[NUM]; //电影的名称
int score; //电影的评分
};
typedef struct film FILM; //typedef film FILM;
int main(void)
{
FILM movie;// = { "GoldedFather",10 };
strcpy(movie.name, "GoldedFather"); movie.score = 10;
printf("the name is %s and the score is %d .\n", movie.name, movie.score);
return 0;
}
结构体字符串不能这样直接赋值,你必须用strcpy对它进行赋值
move.name="xxxx"
typedef struct FILM movie;