gpt4 book ai didi

c++ - 输出消失

转载 作者:行者123 更新时间:2023-11-28 05:37:23 25 4
gpt4 key购买 nike

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

#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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com