请问程序是哪个地方有问题?在运行的时候,循环到第二个联系人无法输入姓名

#include
#include
#include
#include<string.h>
using namespace std;
struct people
{
string name; int num; int qq; char email;
};
struct adpeople
{ people ad[100];
};
void read()
{ cout<<"1.输入联系人的信息"<<endl;
cout<<"2.显示所有联系人的信息"<<endl;
cout<<"3.查找联系人的信息"<<endl;
cout<<"输入相对应的数字执行对应操作:"<<endl;
}
void get(adpeople *p)
{
string name; int num; int qq; char email; for(int i=0;i<100;i++)
{
cout<<"请输入第"<<i+1<<"个通讯人的姓名:"; cin>>p->ad[i].name;
cout<<"请输入第"<<i+1<<"个通讯人的电话:"; cin>>p->ad[i].num;
cout<<"请输入第"<<i+1<<"个通讯人的qq:"; cin>>p->ad[i].qq;
cout<<"请输入第"<<i+1<<"个通讯人的email:"; cin>>p->ad[i].email;
}
}
void display(adpeople *p)
{
for(int i=0;i<100;i++)
{
cout<<"NO."<<i+1<<endl;
cout<<"name:"<ad[i].name<<endl; cout<<"num:"<ad[i].num<<endl;
cout<<"qq:"<ad[i].qq<<endl;
cout<<"email:"<ad[i].email<<endl;
}
}
void find(adpeople *p)
{
string name1;
cout<<"请输入需要查找联系人的姓名:"<<endl; cin>>name1;
for(int i=0;i<100;i++)
{
if(name1==p->ad[i].name)
{
cout<<"查询成功!"<<endl;
cout<<"NO."<<i+1<<endl;
cout<<"name:"<ad[i].name<<endl; cout<<"num:"<ad[i].num<<endl;
cout<<"qq:"<ad[i].qq<<endl;
cout<<"email:"<ad[i].email<<endl; }
else
cout<<"查无此人!"<<endl;
}
}
int main()
{
adpeople p;
while (true)
{
int choice=0;
read();
cin>>choice;
switch(choice)
{
case 1:
get(&p);
break;
case 2:
display(&p);
break;
case 3:
find(&p);
default:
cout << "输入有误" << endl; break; }
}
return 0;}

img

cin>>p->ad[i].email;
char email;
email都是字符型,首先是不可能啊。不也应该是string么
错误原因是上一个email你输入了23,其中2给了email,3就自动给了下一个人的姓名,所以你不用再输了,自动成了3