C 警告"format '%d' expects argument of type 'int *', but argument 2 has type 'int"



我想用一个字符串和一些数字填充这些数组,但似乎真的不明白为什么不能。

#include <stdio.h>
struct students{
char name[30];
int points[10];
int absences[10];
};
int main()
{
int i, n;
printf("Declare the number of students: ");
scanf("%d", &n);
struct students stud[n];
for (i = 0; i < n; i++) {
printf("Name: ");
scanf("%s", &stud[i].name);
printf("Points: ");
scanf("%d", &stud[i].points);
printf("Absences: ");
scanf("%d", &stud[i].absences);
}

for( i = 0; i < n; i++)
{
printf("%sn", stud[i].name);
printf("%dn", stud[i].points);
printf("%dn", stud[i].absences);
}

}

这是我得到的警告:

警告:格式"%s"需要"char"类型的参数,但参数2的类型为"char(([30]"[-Wformat=]

scanf("%s", &stud[i].name);

feladat1.c:2:15:警告:格式"%d"需要类型为"int"的参数,但参数2具有类型"int(([10]'[-Wformat=]

scanf("%d", &stud[i].points);

feladat1.c:23:15:警告:格式"%d"需要"int"类型的参数,但参数2的类型为"int(([10]'[-Wformat=]

scanf("%d", &stud[i].absences);

feladat1.c:30:16:警告:格式"%d"需要类型为"int"的参数,但参数2的类型为"int*"[-Wformat=]

printf("%dn", stud[i].points);

feladat1.c:31:16:警告:格式"%d"需要类型为"int"的参数,但参数2的类型为"int*"[-Wformat=]

printf("%dn", stud[i].absences);
  1. struct students中,int points[10];应为int points;int absences[10];应为int absences;

  2. 线路scanf("%s", &stud[i].name);应为scanf("%s", stud[i].name);

以下code可以工作:

#include <stdio.h>
#include <stdlib.h>
struct students{
char name[30];
int points;
int absences;
};
int main()
{
int i, n;
printf("Declare the number of students: ");
scanf("%d", &n);
struct students *stud = malloc(sizeof(struct students) * n);
for (i = 0; i < n; i++) {
printf("Name: ");
scanf("%s", stud[i].name);
printf("Points: ");
scanf("%d", &stud[i].points);
printf("Absences: ");
scanf("%d", &stud[i].absences);
}

for( i = 0; i < n; i++)
{
printf("%sn", stud[i].name);
printf("%dn", stud[i].points);
printf("%dn", stud[i].absences);
}
return 0;
}

相关内容

最新更新