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 变量的指针。
我有一个程序,我必须在数据库中使用 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 变量的指针。