gpt4 book ai didi

c++ - 为什么输出会跳过 gets(&char*) 的语句

转载 作者:行者123 更新时间:2023-11-28 04:05:10 25 4
gpt4 key购买 nike

在下面的代码中,我有一个名为 Market 的类.数据成员和函数如图所示。当函数shopkeeper(market &m , int i)被调用,编译器在不使用Name的情况下执行“名称”和“价格”的打印。来自用户 gets() .

class market
{
public:
char item;
double price, tax, total;
public:


market()
{
char* item;
price=0;
tax=0;

}
void shopkeeper(market &m, int i)
{




cout<<" Item number "<<i<<"\n ";
cout<<" ----------- "<<"\n";
cout<<"Name ";
gets(&(m.item));
cout<<" Price "<<endl;
cin>>m.price;
cout<<" Tax "<<endl;
cin>>m.tax;

}

我们的输出如下: The output

最佳答案

item 是单个字符。如果您阅读 gets 的文档,该函数会收到一个指向您必须分配的缓冲区的指针,该缓冲区的大小足以容纳输入,否则会发生未定义的行为。

此外,gets 是一个不应再在 C++ 中使用的函数。它也从最近版本的语言中删除。您应该使用 std::string 并像其他所有内容一样从 std::cin 读取它。

关于c++ - 为什么输出会跳过 gets(&char*) 的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58850977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com