Предупреждение C "format"%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);
1 ответ
В
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;
}
Попробуйте этот код
#include <stdio.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[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;
}