moliwow 2022-05-07 15:41 采纳率: 100%
浏览 16
已结题

添加函数后原有函数运行不正常

问题遇到的现象和发生背景

在写一个程序的时候,由于添加条目和名称查询功能一直不正常,所以写了下面这段测试代码
但在加入代码中seek函数之前,可以正常循环输入三个变量,加入之后,只能输入一个变量后程序卡住,然后结束

问题相关代码,请勿粘贴截图

#include <iostream>
#include<string.h>
#include <fstream>
#include <iomanip>
using namespace std; 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
class object{
    protected:
        long int num;//货物编号 
        char* name;//货物名称 
        double price;//货物单价 
        int quantity;//货物数量 
        double sumprice;//货物总价
    public:
        object(){
        num=0000;
        name="null";
        price=0.0;
        quantity=0;
        sumprice=price*quantity;
    }
        object(long int nu,char* na,double p,int q){
            num=nu;
            name=na;
            price=p;
            quantity=q;
            sumprice=p*q;
        }
        void set_object(){
            cout<<"请输入货物条目信息"<<endl
                <<"顺序为:货物编号,货物名称,货物单价,货物数量"<<endl; 
            cin>>num>>name>>price>>quantity;
            sumprice=price*quantity;
        }
        void get_object(){
            cout<<setw(8)<<setiosflags(ios::left)<<num
                <<setw(8)<<setiosflags(ios::left)<<name
                <<setw(8)<<setiosflags(ios::left)<<price
                <<setw(8)<<setiosflags(ios::left)<<quantity
                <<setw(8)<<setiosflags(ios::left)<<sumprice<<endl; 
        }
        void seek(char* na){
            int right=strcmp(na,name);
            if(right==0){
                get_object();
            }
                 
            
        } 

};
 
int main(int argc, char** argv) {
    object ob[3];
    for(int i=0;i<3;i++){
        ob[i].set_object();
    }
    for(int i=0;i<3;i++){
        ob[i].get_object();
    }
    char* na;
    cin>>na;
    ob[0].seek(na);
    return 0;
}

运行结果及报错内容

当写完seek函数的代码后,无论加不加入主函数都会造成只能输入一个object变量后程序卡住结束

我的解答思路和尝试过的方法

之前曾经把类内的num等对象写为公有类型,造成输入不正常,随后改为受保护类型,随后输入正常

我想要达到的结果

蹲蹲如何能让输入函数正常工作以及如何达成名称查询功能

  • 写回答

1条回答 默认 最新

  • 於黾 2022-05-07 15:46
    关注

    1.na必须是个数组,不可以是个指针,因为你没给它分配内存,那么你通过cin输入的内容没地方可存
    2.set_object同理,属性都必须是数组,不可以是指针

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月15日
  • 已采纳回答 5月7日
  • 创建了问题 5月7日

悬赏问题

  • ¥50 C# 使用DEVMOD设置打印机首选项
  • ¥15 想用@vueuse 把项目动态改成深色主题,localStorge里面的vueuse-color-scheme一开始就给我改成了dark,不知道什么原因(相关搜索:背景颜色)
  • ¥20 OPENVPN连接问题
  • ¥15 flask实现搜索框访问数据库
  • ¥15 mrk3399刷完安卓11后投屏调试只能显示一个设备
  • ¥100 如何用js写一个游戏云存档
  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题