源代码目标实现多个字符存储动态数组,并循环依次让用户写入存储。
cin.get()读取1个字符,你连续输入了多个字符,多输入的字符会一直保存在缓冲区内。
please enter the maker:后面输入的时候,只能输入一个字符和一个回车,这样才能正常输入。你的car结构体中,produc也只是一个字符的大小。
输入如下所示:
代码注释如下:
#include <iostream>
using namespace std;
struct car
{
char produc;
int year;
};
int main()
{
int a;
std::cout <<"How many cars do you wish to catalog?";
cin >> a;
car* ca = new car[a];
for (int i=0;i<a;i++)
{
cout <<"Car #"<<i+1<<":"<<endl;
cout <<"Please enter the maker: "<<endl;
cin.get(); //这里读取一个字符,用来吸收上一次输入的回车
cin.get(ca[i].produc);
cin.get(); //吸收回车符
cout << ca[i].produc;
cout <<"Please enter the year made:";
cin >> ca[i].year;
}
for (int i=0;i<a;i++)
{
cout << ca[i].produc << ca[i].year;
}
delete[] ca;
ca = 0;
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!