format 指定类型 'int *' 但在键入 scanf("%d", (*(pArr[i])).age 时,参数在 C 语言中具有类型 'int' [-Wformat];

format specifies type 'int *' but the argument has type 'int' [-Wformat] in C language when typing scanf("%d", (*(pArr[i])).age);

我有一个程序,我必须在数据库中使用 C 中的指针结构和指针数组为学生添加姓名、年龄和 2 门课程。我能够将用户输入的姓名存储到数据库中但不是年龄。当我输入年龄时,此错误显示“格式指定类型 'int ' 但参数的类型为 'int' [-Wformat] scanf("%d", ((pArr[i])).age);"

我知道这可能是一个常见错误,但我对 C 有点陌生。任何帮助将不胜感激。 我输入新值的函数如下所示:-

此外,此代码仍在开发中,所以如果有任何额外的错误,请指出我:)

//global
#define SIZE 30
#define fieldLength 200

struct db_type
{
   char name[fieldLength];
   int age;
   char course1[fieldLength];
   char course2[fieldLength];
   char status[fieldLength];
 };

struct courseInfo
{ 
  char code [20]; // e.g., EECS2030
  char title [fieldLength];
  char  date [20];
  char time_start [20];
  char time_end [20];
  char  location [20]; 
};

struct courseInfo courseArr[SIZE]; 

int main(int argc, char *argv[])
{
    
    struct db_type * db_pArr[SIZE];  // main db storage

    init_list(db_pArr);  // set to NULL
    
    init_courseArr();  // load course from diskfile
    
    char choice;
    for(; ;){
      choice = prompt_menu();
      switch (choice)
      {
         case 'n': enterNew(db_pArr); break;  
         case 'q': exit(1); // terminate the whole program
       }
    
     }
     return 0;
}

void enterNew(struct db_type * pArr[SIZE]){ 
  static int i=0; 
  static int j=0;
  int flag = 0;

  pArr[i] = malloc(sizeof(struct db_type));

  printf("name: ");
  scanf("%s", (*pArr[i]).name);

  printf("age: ");
  scanf("%d", (*(pArr[i])).age); //error here

  printf("course-1: ");
  scanf("%s", (*pArr[i]).course1);

  while(flag == 0)
  for(int j=0; j<SIZE; j++){
    if(strcmp((*pArr[i]).course1, courseArr[j].code) == 1 && flag == 0){
      printf("course does not exist, enter again: \n");
      printf("course-1: ");
      scanf("%s", (*pArr[i]).course1);
    }
    else
      flag = 1;
  }

  if(flag == 1)
    ++i;

  // further code in development
  // printf("course-2: ");
  // scanf("%s", pArr[i].course2);
}

有关程序功能的更多额外信息 -> 该程序基本上是学生数据库管理系统的一部分。当用户输入 'n' 或 'N' 时,调用此函数。用户可以选择输入学生姓名、年龄、学生的课程 1 和课程 2。它还必须检查课程 1 和课程 2 的开始时间和结束时间是否冲突,并将其存储在结构 db_type.

的名为 char status[] 的变量中

改变

  scanf("%d", (*(pArr[i])).age);

  scanf("%d", &(*(pArr[i])).age);

scanf() 需要一个指向变量的指针并在其前面添加 & returns 变量的指针。