dev gets() & puts() 未在 dev C++ 的范围内声明

dev gets() & puts() not declared in scope in dev c++

本文关键字:dev 声明 范围内 C++ puts gets 未在      更新时间:2023-10-16

这是我为书店编写的简单代码代码没有任何问题。我使用DevC++来运行代码,编译后它会发出一个错误,说"gets"没有在这个范围内声明&看跌期权也有同样的错误。请帮帮我。

#include<iostream>
#include<conio.h>
#include<stdlib.h>
#include<iomanip>
#include<cstring>
using namespace std;
class Book
{
    char *title,*author,*publisher,ans;
    int price,quant,quant_ent;
    public:
            Book()
            {
        title = new char[50];
        author = new char[50];
        publisher = new char[50];
        price = quant = quant_ent = 0;
            }
        void getdata()
        {
            cout<<"nEnter The Title";
            gets(title);
            cout<<"nEnter The Author";
            gets(author);
            cout<<"nEnter The Publisher";
            gets(publisher);
            cout<<"nEnter The Price";
            cin>>price;
            cout<<"nEnter The Quantity";
            cin>>quant;
        }
    void display()
    {
        cout<<setw(15)<<title<<setw(15)<<author<<setw(15)<<publisher<<setw(10)<<quant
            <<setw(10)<<price;
    }
    void search(char search_title[],char search_author[])
    {
        if(strcmpi(author,search_author)==0)
        {
            if(strcmpi(title,search_title)==0)
            {
                cout<<"nBook Found!";
                cout<<"nEnter The Quantity: ";
                cin>>quant_ent;
                if(quant_ent <= quant)
                {
                    cout<<"nThe Title is: ";
                    puts(title);
                    cout<<"nThe Author is: ";
                    puts(author);
                    cout<<"nThe Publisher is: ";
                    puts(publisher);
                    cout<<"nPrice Of Single Copy: "<<price;
                    cout<<"nTotal Price = "<<price*quant_ent;
                    quant = quant - quant_ent;
                }
                else
                {
                    cout<<"nSufficient Quantity Not Available!";
                }
            }
        }
    }
};

int main()
{
Book obj[10];
int i=0,ch;
char author[50],title[50];
for(;;)
{
    cout<<"n*******MENU********n1)Enter Detailsn2)Buy Bookn3)Display All Booksn4)Exit";
    cin>>ch;
    switch(ch)
    {
        case 1:
            obj[i].getdata();
            i++;
            break;
        case 2:
            cout<<"nEnter The Authors Name: ";
            gets(author);
            cout<<"nEnter The Title: ";
            gets(title);
            for(int j=0;j<i;j++)
            {
                obj[j].search(title,author);
            }
            break;
        case 3:
            cout<<setw(15)<<"TITLE"<<setw(15)<<"AUTHOR"<<setw(15)<<"PUBLISHER"<<setw(15)<<"QUANTITY"<<setw(15)<<"PRICE";
            cout<<"n"<<setw(75)<<"-----------------------------------------------------------------------------------------------------";
            for(int j=0;j<i;j++)
            {
                cout<<"n";
                obj[j].display();
            }
        case 4:
            exit(1);
    };
}
}

因为它是在stdio.h(C++中的cstdio)标头中声明的,而您还没有包含它。

但您不能使用gets。这是一个无可救药的坏功能。请改用fgets。更好的是,去掉指向char数组的裸指针,改为使用std::string类。