在for循环中读取struct类型中的变量

MLS*_*LSC 2 c++ struct

我写了一段代码,我应该从for循环中读取变量:

#include <iostream>
using namespace std;

#define NumOfStudents 100
#define NumOfCourses 15

struct Student{
  int stdnum, FieldCode, age;
  double average, res[NumOfCourses];
  char name[20];          //First and Last name length                                                                                                                          
};

int main(){
  struct Student students[NumOfStudents];
  int i;
  cout << "\tNAME || STUDENT-NUMBER || FIELD-CODE || AGE";
  for(i=0; i<NumOfStudents; i++){
    cout << "\nSTUDENT #" << i+1 << ": ";
    cin >> students[i].name[20] >> students[i].stdnum >> students[i].FieldCode >> students[i].age;                                                                            
    //    cin >> students[i].name[20];                                                                                                                                          
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑:输出是:

./st 
    NAME || STUDENT-NUMBER || FIELD-CODE || AGE
STUDENT #1: test

STUDENT #2: 
STUDENT #3: 
STUDENT #4:
.
.
.
STUDENT #100:
Run Code Online (Sandbox Code Playgroud)

我可以输入第一个学生的名字,循环不能正常工作有什么问题?

Sun*_*lly 7

cin >> students[i].name[20];

它不应该是一个数组20.这意味着您输入的第一个字符存储在索引20th位置,该位置不正确,并且可能导致未定义的行为,因为name数组仅从索引0到索引19.

而应该是cin >> students[i].name,它写入数组的基地址name


Sak*_*mar 5

我想你必须写

cin >> students[i].name
Run Code Online (Sandbox Code Playgroud)

由于它是一维数组,subscript因此不应用于获取输入.