c - C 警告“格式 '%d' 需要 'int *' 类型的参数,但参数 2 的类型为 '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("%s\n", stud[i].name);
printf("%d\n", stud[i].points);
printf("%d\n", stud[i].absences);
}
}
这是我得到的警告:
警告:格式“%s”需要“char ”类型的参数,但参数 2 的类型为“char ( )[30]”[-Wformat=]
scanf("%s", &stud[i].name);
feladat1.c:21: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("%d\n", stud[i].points);
feladat1.c:31:16:警告:格式“%d”需要“int”类型的参数,但参数 2 的类型为“int *”[-Wformat=]
printf("%d\n", stud[i].absences);
解决方案
在
struct students
,int points[10];
应该int points;
,int absences[10];
应该int absences;
该行
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("%s\n", stud[i].name);
printf("%d\n", stud[i].points);
printf("%d\n", stud[i].absences);
}
return 0;
}
推荐阅读
- reporting-services - 来自 Lookup() 的钻取参数值
- jenkins - Bitbucket 服务器:合并检查 - 即使在满足条件后,最小成功构建也不会启用合并
- java - Mac OS HSDB HotSpot Debugger 无法附加到进程
- async-await - .NET Core 2.1,Manjuro Linux 在没有 ConfigureAwait(false) 的情况下失败
- postgresql - 将 Heroku 应用程序连接到外部数据库
- git - 自动化 Git 部署
- java - omnikey 3121 windows 动态 emv 读卡器和写卡器
- c - 我必须是超级用户才能使用 C 的文件处理操作吗?
- angular5 - Angular 服务器端渲染;如何让它永远运行?
- r - 使用 dplyr 中的超前和滞后作为向量内的微分值