如何清除C for循环中的缓冲区?

如何清除C for循环中的缓冲区?,c,struct,scanf,C,Struct,Scanf,我正在参与一个涉及structs的学校项目,我遇到以下问题: 我创建了一个最多包含50个产品的结构。 用户将为每个产品输入整数代码、浮动价格、整数数量和字符名称[256] 我遇到的问题是scanf_s(“%c”,&product.name)溢出了“\n” 以下是代码片段: 我希望您理解我的问题,并能帮助我。您应该阅读以下内容: scanf(“%s”,名称) 您应该使用%s扫描字符串。 \0将自动添加到字符串末尾 请记住,您只有256字节的数据,如果您想添加更大的字符串,它将溢出 scanf(“

我正在参与一个涉及structs的学校项目,我遇到以下问题:

我创建了一个最多包含50个产品的结构。 用户将为每个产品输入整数代码、浮动价格、整数数量和字符名称[256]

我遇到的问题是
scanf_s(“%c”,&product.name)溢出了“\n”

以下是代码片段:

我希望您理解我的问题,并能帮助我。

您应该阅读以下内容:


scanf(“%s”,名称)

您应该使用
%s
扫描字符串。
\0
将自动添加到字符串末尾

请记住,您只有256字节的数据,如果您想添加更大的字符串,它将溢出

scanf(“%s”,对象属性)

因为你添加了C++标签。查看

std::string
对象和
std::cin


std::getline(std::cin,str)
scanf
有它的位置,但它不是读取用户输入的唯一方法,尤其是在从
stdin
读取行时。考虑使用<代码> fgs<代码>来读取这些行…

fgets(produse[contor].nume_produs, sizeof(produse[contor].nume_produs), stdin);
也会起作用


以下是有关的一些信息,请编辑您的帖子,将相关代码正确地放入内容中。如果它是一个,那就更好了。你是说
getchar()
?也许你想要像
scanf(“%s”,product.name)
这样的东西,在这里你可以读取一个字符串而不是单个字符?看看链接的“代码片段”。。。。一错再错。数组索引从零开始,因此具有
n
元素的数组的最后一个元素具有索引
n-1
。循环的数组索引从1开始。投票结束,因为这本质上是一个(愚蠢的)打字错误。两个错误:
scanf
使用
%s
格式将不会在字符串中添加换行符;而且,您不应该在字符串上使用运算符
&
的地址。对于数组,它将导致参数的错误类型,对于指针,它将指向指针,
scanf
将在完全错误的位置写入。感谢您的更正。我的意思是
\0