C++ C4473结构分配警告

C++ C4473结构分配警告,c++,structure,scanf,C++,Structure,Scanf,我目前正在做一项作业,很想知道编译时这个警告是什么,以及如何纠正它。它将生成,但当我调试时,它将得到一个错误屏幕。下面是出现的警告 1> c:\users\cesteves\documents\c 编程\inventory\inventory\inventory.cpp(48):警告C4473: “scanf_s”:为格式字符串传递的参数不足 注意:占位符及其参数需要2个可变参数, 但提供了1个 注意:格式字符串需要缺少可变参数2 “%s”注意:此参数用作缓冲区大小 #包括“stdafx.h”

我目前正在做一项作业,很想知道编译时这个警告是什么,以及如何纠正它。它将生成,但当我调试时,它将得到一个错误屏幕。下面是出现的警告

1> c:\users\cesteves\documents\c 编程\inventory\inventory\inventory.cpp(48):警告C4473: “scanf_s”:为格式字符串传递的参数不足

注意:占位符及其参数需要2个可变参数, 但提供了1个

注意:格式字符串需要缺少可变参数2 “%s”注意:此参数用作缓冲区大小

#包括“stdafx.h”
#包括
void main()
{
结构日期{
国际日;
整月;
国际年;
};
结构细节{
字符名[20];
国际价格;
int代码;
整数数量;
结构日期制造;
};
结构详细信息项[50];
int n,i;
printf(“输入项目数量:”);
扫描频率(“%d”和“&n”);
对于(i=0;i
您应该提供缓冲区的大小。例如,如果只读取一个字符,则应如下所示:

char c;
scanf_s("%c", &c, 1);
请仔细阅读

另外,
structs
放在
main()
之前也很好。我一直在考虑
structs
的基本用法

main的原型应该是
intmain(void)
。选中此项:


在代码中,更改以下内容:

scanf_s("%s", item[i].name);
为此:

scanf_s("%s", item[i].name, 20);
因此:

struct details {
  char name[20];
  ..  

对其余部分执行相同操作。

您应该提供缓冲区的大小。例如,如果只读取一个字符,则应如下所示:

char c;
scanf_s("%c", &c, 1);
 scanf_s("%s", item[i].name);    
请仔细阅读

另外,
structs
放在
main()
之前也很好。我一直在考虑
structs
的基本用法

main的原型应该是
intmain(void)
。选中此项:


在代码中,更改以下内容:

scanf_s("%s", item[i].name);
为此:

scanf_s("%s", item[i].name, 20);
因此:

struct details {
  char name[20];
  ..  
其余的也一样

 scanf_s("%s", item[i].name);    
scanf_s
要求将的大小作为第三个参数,并带有说明符
%s
%c
%[

你需要这样写-

 scanf_s("%s", item[i].name,20);  
类似,用于将单字符过程
1
作为输入大小

scanf_s
要求将的大小作为第三个参数,并带有说明符
%s
%c
%[

你需要这样写-

 scanf_s("%s", item[i].name,20);  


类似的,用于将输入的单个字符传递作为大小。

scanf\u s
是安全的scanf。需要缓冲区大小。
scanf\u s(“%s”,项[i]。名称,20);
scanf\u s
是安全的scanf。需要缓冲区大小。
scanf\u s(“%s”,项[i]。名称,20)
请投什么的反对票?如果有什么问题,请告诉我为未来的用户更新……我感谢您的帮助,并更正了结构的位置well@Chris我更新了一个structs的例子。很高兴它有帮助,+1因为我花时间编辑了你的文章。我投了反对票。我觉得“RTFM”的评论有点不专业,你呢可以在该链接中引用文档的相关部分。您的评论也应该在main()之前。我一直在考虑我的示例。应该有一些解释。本地结构是否符合标准?链接(和引用会更好)。是否有一个风格指南说您不应该等?(链接到此类信息将是适当的)。据我所知,C99支持本地结构,但C89不支持本地结构。@MichaelPetch感谢您的评论。我同意RTFM,我会删除它。至于结构,我也会更新。如果您有任何其他问题,请告诉我。请对什么投反对票?如果有什么问题,请告诉我为未来的用户更新…我很感激帮助并更正了结构的位置,如图所示well@Chris我更新了一个structs的例子。很高兴它有帮助,+1花时间编辑你的文章。我投了反对票。我觉得“RTFM”的评论有点不专业,你可以在那个链接上引用文档的相关部分。你的评论也应该在main()之前.我一直在想我的例子。应该有一些解释。本地结构是否符合标准?一个链接(和一个引用会更好)。是否有一个风格指南说你不应该等?(链接到这样的信息将是适当的)。据我所知,C99支持本地结构,但C89不支持。@MichaelPetch感谢您的评论。我同意RTFM,我会删除它。至于结构,我也会更新。如果您有任何其他问题,请告诉我。您好,回答很好,+1。事实上它与我的非常相似,但我投了反对票,所以我可能会出错。C你看到了吗?@gsamaras我什么也看不到。好吧,所有人都可以说它发生在……所以,它是一部分:-)也许是这样的!@Chris别忘了交流