C项目中未更新的结构数组

eivgtgni  于 2023-02-18  发布在  其他
关注(0)|答案(1)|浏览(126)

我目前正在尝试为我的入门C课程制作一个学生数据库系统。我正在研究向数据库中添加新学生的功能,以便它可以显示出来。然而,每当我试图打印出数组中结构体的每个单独的功能时,它都没有返回我想要的结果。浮点数变为0,字符串不可见。
对于上下文,下面是用于显示数组中每个元素的代码

void displayStudents() {

  printf("\t\tList of Student Information\n");
  printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n ");
  printf("|No.| \t \t \t Name \t \t \t |\t Major \t\t| GPA |");
  printf("\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n");

  int i;
  for (i = 0; i < (currentEntries); i++) {
    printf("%s",listOfStudents[currentEntries].name);
    printf("%f",listOfStudents[currentEntries].gpa);
    printf("%s",listOfStudents[currentEntries].major);
    
    // these print statemnts above print "", 0, and "" respectively.

  }

  
}

以下是用于将新学生添加到数组中的函数
x一个一个一个一个x一个一个二个x
下面是在main()中调用它们的方式

scanf("%d", &selection);
  switch(selection) {
      case 1:
        displayStudents();
        promptKeyPress(&inMenu);
        break;
      case 2:
        addNewStudents(); 
        promptKeyPress(&inMenu);
        break;

      default:

        programRunning = false;
        break;

此外,currentEntries和listOfStudents都定义为全局变量

int currentEntries = 0;
student listOfStudents[20];

所以,我的问题是,我应该如何处理这个问题,以便displayStudents函数能够打印出我输入的正确值(学生姓名、专业和gpa)?任何帮助都将不胜感激。谢谢!

f4t66c6m

f4t66c6m1#

我认为问题就在这里:

int i;
for (i = 0; i < (currentEntries); i++) {
  printf("%s",listOfStudents[currentEntries].name);
  printf("%f",listOfStudents[currentEntries].gpa);
  printf("%s",listOfStudents[currentEntries].major);
    
  // these print statemnts above print "", 0, and "" respectively.

}

索引错误。请将循环内的currentEntries替换为i

int i;
for (i = 0; i < (currentEntries); i++) {
  printf("%s",listOfStudents[i].name);
  printf("%f",listOfStudents[i].gpa);
  printf("%s",listOfStudents[i].major);
    
  // these print statemnts above print "", 0, and "" respectively.

}

相关问题