为什么输出正在跳过gets(&char *)的语句

在下面的代码中,我有一个名为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;

        }

我们的输出如下:

为什么输出正在跳过gets(&char *)的语句

zuochang0529 回答:为什么输出正在跳过gets(&char *)的语句

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

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

本文链接:https://www.f2er.com/3104766.html

大家都在问