无法在C ++中输入字符数组

时间:2018-10-25 06:24:59

标签: c++

代码:

#include<iostream>
#include<stdio.h>
#include<string.h>

using namespace std;

struct student
{
    char name[20];
    int id;
    float cgpa;
};

int main()
{   
    student s[100];

    int n,i;
    cout<<"Enter number of students: ";
    cin>>n;
    cout<<"Enter records of "<<n<<" students"<<endl;

    for(i=0; i<n ; i++)
    {   
        cout<<"Enter name: ";           
        gets(s[i].name);
        cout<<"Enter ID: ";
        cin>>s[i].id;
        cout<<"Enter CGPA: ";
        cin>>s[i].cgpa;
        cout<<endl;
    }   

    for(i=0; i<n ; i++)
    {
        cout<<"\nName: "<<s[i].name;
        cout<<"\nID: "<<s[i].id;
        cout<<"\nCGPA: "<<s[i].cgpa<<endl;
    }   
}

输出:

Enter number of students: 2
Enter records of 2 students

Enter name: Enter ID: 

使用崇高文字3 c ++

2 个答案:

答案 0 :(得分:1)

使用<string>作为名称而不是字符数组,然后像往常一样使用cin而不是gets来读取字符串。

答案 1 :(得分:0)

作为Some Programmer Dude的指针,您按下的输入将以换行符'\n'的形式放入输入缓冲区,然后由get()接受,从而使其跳至下一个输入。

有两种方法可以解决此问题:

  1. 在获取输入的循环开始时使用cin.ignore()

  2. 更好的选择是摆脱gets()。自c ++ 14起不推荐使用。其次,用字符串替换字符数组。

因此该结构将看到string name;的修改

只需在循环中执行cin>>s[i].name;

就这样。

此外,最好使用cstdio代替stdio.h