c++ - 输出消失

标签 c++

这是我试图编写的代码,它是一个简单的结构程序,用于根据特定细节进行存储和搜索,而不是每次都显示整个结构

#include <iostream>
#include <string>
#include <conio>
#include <stdlib>

using namespace std;
struct stu
{
    int roll;
    char name[80];
    int cls;
    int adm;
};
void inp(stu &s)
{
    cout<<"\n Enter Details of Student: ";
    cout<<"\n Enter Name: ";
    gets(s.name);
    cout<<"\n Enter Roll no.: ";
    cin>>s.roll;
    cout<<"\n Enter Class: ";
    cin>>s.cls;
    cout<<"\n Enter Admission: ";
    cin>>s.adm;
}
void out(stu s)
{
    cout<<"\n Details Are: ";
    cout<<"\n Name: "<<'\t'<<s.name;
    cout<<"\n Roll: "<<'\t'<<s.roll;
    cout<<"\n Enter Class: "<<'\t'<<s.cls;
    cout<<"\n Admission No.: "<<'\t'<<s.adm;
}

void main()
{
    stu s[50];
    int n,i;
    cout<<"\n Enter no. of Students: ";
    cin>>n;
    for(i=0;i<n;i++)
    {
    inp(s[i]);
    }
    menu:
        clrscr();
    cout<<"\n Search by";
    cout<<"\n 1.Roll"<<'\t'<<"\n 2.Name"<<'\t'<<"\n 3.Admission No."<<'\t'<<"\n 4.Exit"<<endl;
    int opt,r,amd;
    char naam[30];
    cin>>opt;
    if(opt==1)
    {
         cout<<"\n Enter Roll:";
         cin>>r;
        for(i=0;i<n;i++)
        {
        if(s[i].roll==r)
           out(s[i]);
           else
            cout<<"\n Not Found";
        }
    }
    if(opt==2)
    {
        cout<<"\n Enter Name:";
        gets(naam);
        for(i=0;i<n;i++)
        {
            if(strcmp(naam,s[i].name)==0)
                 out(s[i]);
                 else
            cout<<"\n Not Found";
        }
    }
       if(opt==3)
       {
         cout<<"\n Enter Admission No.: ";
         cin>>amd;
         for(i=0;i<n;i++)
         {
             if(amd==s[i].adm)
                 out(s[i]);
                 else
            cout<<"\n Not Found";
         }
       }
       if(opt==4)
        exit(0);
goto menu;

getch();
}

因此,即使我尝试使用 roll no 或其他方式进行搜索,也不会出现任何输出 在我尝试搜索窗口后返回菜单。那么我该如何解决呢?我应该添加一个标志变量或类似的东西吗?

最佳答案

看起来当您循环回到您的标签时,您会立即清除屏幕。因此,在显示结果后,您没有时间实际查看它们。您可以尝试在显示之后和转到之前进行一些输入。

编辑: 所以就像我上面说的,如果你在 goto 语句之前接受一些用户输入,那么用户将能够在输入之前阅读打印输出。例如

cout >> "Please enter any character to continue.\n";
getch();

然后将 clrscr() 函数放回原来的位置。

此外,我会附和其他人在评论中所说的话。混合流、使用 goto 代替内置循环以及使用固定长度的数组来存储用户输入都不太好。

关于c++ - 输出消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37929080/

相关文章:

Netbeans 中的 C++ 控制台输出

python - 这个C++函数和Python函数之间的区别

c++ - 将我的自定义迭代器与 STL 算法一起使用

c++ - 在 opencv 中反转的结果不正确

c++ - 理论或方向、c++、qt 和使用 MXE 进行交叉编译

c++ - 使用 Thrust 生成均匀分布的随机数

c++ - C++ 中的组合

c++ - 什么决定了C++程序中对象销毁的顺序?

c++ - ISO C++ 库子句中使用的 "convertible to"的定义

c++ - Linux C++ : "Holes" in time sampling