我不能在圈子中第二次或更长时间使用s1 [40],并且它总是满的,
和 cin.getline(s1,40) 以后会被忽略
char s1[40], ans = 'y';
while (ans == 'y')
{
system("cls");
cout << "\n Enter a sentence : ";
cin.getline(s1, 40);
fflush(stdin);
cout << "\n________________________________________\n\n Again?(y/n)";
cin >> ans;
fflush(stdin);
};
答案 0 :(得分:0)
cin >> ans;
实际上不会删除eol,因此下一个getline
将读取一个空行,而cin >> ans;
将读取该行的第一个符号。您还应该使ans
成为数组,并两次使用getline
:
for(;;)
{
char s1[40]{};
system("cls");
cout << "\n Enter a sentence : ";
cin.getline(s1, 40);
fflush(stdin);
if(cin.fail() or cin.bad())
{
cout << "fail" << endl;
break;
}
cout << "\n________________________________________\n\n Again?(y/n)";
char ans[2]{};
cin.getline(ans, 2);
fflush(stdin);
if(cin.fail() or cin.bad())
{
cout << "fail" << endl;
break;
}
if(0 != strcmp("y", ans))
{
break;
}
}