在输入结构对象的输入过程中运行时间错误



首次迭代成功,但后来无法输入名称。另外,我听说过不使用Get,所以我也尝试了fgets,但也没有起作用。请帮助!

我正在用C 语言在CodeBlocks工作

struct stu
{
    char n[25];
    int r;
}s[3];
void getinfo()
{
    for(int i=0;i<3;i++)
       {
            cout<<"name: ";
            gets(s[i].n);           
            cout<<"R.no: ";
            cin>>s[i].r;
       }
}
int main()
{
getinfo();
    for(int l=0;l<3;l++)
        {
            cout<<s[l].n;
            cout<<s[l].r;
        }
}

输出,正确获取第一次迭代,但下次无法输入名称

注意:

cin.getline() - 用于从标准输入设备读取未形式的字符串(一组字符)。

提取操作员>>不会删除行字符的末端,因此,如果将其与getline()混合,则需要调用 cin.ignore(number,'n');摆脱'n'

#include <iostream>
#include <limits> 

struct stu
{
    char n[25];
    int r;
}s[3];
void getinfo()
{
    for(int i=0; i<3; i++)
    {
        std::cout << "name: ";
        std::cin.getline(s[i].n,25);

        std::cout << "R.no: ";
        std::cin >> s[i].r;
        std::cin.ignore( std::numeric_limits<std::streamsize>::max(), 'n');
    }
}
int main()
{
   getinfo();
   std::cout << std::endl;
   for(int l=0; l<3; l++)
   {
        std::cout << s[l].n << "  ";
        std::cout << s[l].r << std::endl;
   }
    return 0;
}

输出:

name: Henry the VIII                                                                                                                                                                                                                            
R.no: 1                                                                                                                                                                                                                                         
name: Ronald Regan                                                                                                                                                                                                                              
R.no: 2                                                                                                                                                                                                                                         
name: Adam K.                                                                                                                                                                                                                                   
R.no: 3                                                                                                                                                                                                                                         
Henry the VIII  1                                                                                                                                                                                                                               
Ronald Regan  2                                                                                                                                                                                                                                 
Adam K.  3  

相关内容

最新更新