在VS2019里C语言编程引用结构体变量时出现E0070等错误,如何修改不会出现报错?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在VS2019里C语言编程引用结构体变量时出现E0070等错误,如何修改不会出现报错?相关的知识,希望对你有一定的参考价值。

#include<stdio.h>

struct Product //声明结构

char cName[10]; //产品名称
char cShape[20]; //形状
char cColor[10]; //颜色
int iPrice; //价格
char cArea[20]; //产地
;

int main()

struct Prouct product1; //定义结构体变量

printf("please enter product's name\n"); //信息提示
scanf_s("%s", &product1.cName); //输出结构体成员

printf("please enter product's shape\n");
scanf_s("%s", &product1.cShape);

printf("please enter product's color\n");
scanf_s("%s", &product1.cColor);

printf("please enter product's price\n");
scanf_s("%d", &product1.iPrice);

printf("please enter product's area\n");
scanf_s("%s", &product1.cArea);

printf("Name:%s\n", product1.cName); //将成员变量输出
printf("Shape:%s\n", product1.cShape);
printf("Color:%s\n", product1.cColor);
printf("Price:%d\n", product1.iPrice);
printf("Area:%s\n", product1.cArea);

return 0;

代码此修改

int main(void)

struct Product product1; //定义结构体变量


printf("please enter product's name\\n"); //信息提示

scanf_s("%s", product1.cName,10); //输出结构体成员


printf("please enter product's shape\\n");

scanf_s("%s", product1.cShape,20);


printf("please enter product's color\\n");

scanf_s("%s", product1.cColor,10);


printf("please enter product's price\\n");

scanf_s("%d", &product1.iPrice);


printf("please enter product's area\\n");

scanf_s("%s", product1.cArea,20);


printf("Name:%s\\n", product1.cName); //将成员变量输出

printf("Shape:%s\\n", product1.cShape);

printf("Color:%s\\n", product1.cColor);

printf("Price:%d\\n", product1.iPrice);

printf("Area:%s\\n", product1.cArea);

getchar();

return 0;


运行:

参考技术A

你的结构体程序我帮你改完了,你看看吧(改动的地方见注释)

注意 缓冲区最大不能超过定义时字符数组的长度

#include<stdio.h>

struct Product

 char cName[10];

 char cShape[20];

 char cColor[10];

 int iPrice;

 char cArea[20];

;

int main()

 struct Product product1; //这里Prouct改成Product

 printf("please enter product's name\\n");

 scanf_s("%s",product1.cName,10);//这里去掉取地址符,加上指定缓冲区大小

 printf("please enter product's shape\\n");

 scanf_s("%s",product1.cShape,20);//这里去掉取地址符,加上指定缓冲区大小

 printf("please enter product's color\\n");

 scanf_s("%s",product1.cColor,10);//这里去掉取地址符,加上指定缓冲区大小

 printf("please enter product's price\\n");

 scanf_s("%d", &product1.iPrice);

 printf("please enter product's area\\n");

 scanf_s("%s",product1.cArea,20);//这里去掉取地址符,加上指定缓冲区大小

 printf("Name:%s\\n", product1.cName);

 printf("Shape:%s\\n", product1.cShape);

 printf("Color:%s\\n", product1.cColor);

 printf("Price:%d\\n", product1.iPrice);

 printf("Area:%s\\n", product1.cArea);

 return 0;

本回答被提问者采纳
参考技术B

使用scanf_s函数输入时,如果输入的是字符或者字符串要增加字符或者字符串最大个数。比如下面的

scanf_s("%s",&product1.cName);

要改成

scanf_s("%s",&product1.cName, sizeof(product1.cName));

参考技术C 这一句打错了:
struct Prouct product1;
应该是Product

c语言结构体初始化

我用的是vs2010,按照谭浩强书里的page--297,页,说是可以有:strcut student b =.name="zhang fang";这种初始化形式啊,这里为什么会出错呢?

这个结构体中包含三个变量,num name[20] c
你的结构体初始化只初始化了 name[20]
其余俩个变量没有初始化,所以会报错
你可以这样初始化 struct wo b(1,"jack",'M');
要注意对结构体中所有变量都要初始化,除非这个变量有缺省值追问

为什么都必须初始化,谭浩强说C99标准允许对某一成员初始化,什么是缺省值?

追答

对某一成员初始化 是这样的对某一成员 比如
你的例子不是struct wo b;
b.name="jack";
b.num=23;
这样是可以对某一成员赋值的
但你的赋值是对整体赋值,你想一想你的定义struct wo b(,"jack",);
另外两个变量怎么办! 除非你定义结构体的时候如下定义
struct wo

int num=0; //这就是缺省值
char name[20]="jack";
char c; //这个就没有缺省值,懂了吧

参考技术A 没有吧,我怎么没见过,结构体赋值:struct wo b=10,"aaaa",'b';或是b.num=10;没见过你写的那样 参考技术B 这是c99的语法,你的编译器可能不支持c99或你没有打开相应的编译选项

以上是关于在VS2019里C语言编程引用结构体变量时出现E0070等错误,如何修改不会出现报错?的主要内容,如果未能解决你的问题,请参考以下文章

请问 C语言里的 结构体中定义变量 后面的:是啥意思

c语言一个结构体如何在多个源文件里面调用?

关于c语言结构体变量成员引用的问题

关于c语言结构体变量成员引用的问题

C语言-结构体

C语言结构体函数的返回值是结构体结构体变量中的信息