输出消失了

时间:2016-06-20 18:09:32

标签: 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或者某些东西进行搜索,也没有输出 在我尝试搜索窗口后返回菜单。那么我该如何解决这个问题呢?我应该添加一个标志变量吗?

1 个答案:

答案 0 :(得分:1)

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

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

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

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

此外,我会回应其他人在评论中所说的话。混合流,使用goto而不是内置循环并使用固定长度数组来存储用户输入都不太好。