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

unable to input character array in c++

本文关键字:输入 字符 数组 C++      更新时间:2023-10-16

代码:

#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++

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

作为某个程序员的指针,您按下的输入作为换行符'n'放入输入缓冲区,然后被get()接受,导致它跳到下一个输入。

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

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

  2. 更好的选择是摆脱gets().自 c++14 以来,它已被弃用。其次,将字符数组替换为字符串。

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

只需在循环中cin>>s[i].name;即可。

就是这样。

此外,最好使用cstdio而不是stdio.h.