I don't understand why the following code doesn't work:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
struct data
{
int age;
char name[20];
};
int main()
{
struct data element[2];
for (int j = 0; j < 2; j++)
{
element[j] = (struct data) malloc(sizeof(struct data));
printf("Enter fav number%d? \n", j);
scanf("d", &element[j].age);
printf("Enter fav word? \n");
scanf("s", &element[j].name);
}
printf("\nThis is what you entered:\n");
for (int k = 0; k < 2; k++)
{
printf("%d. Fav number: %d\n", k, &element[k].age);
printf("%d. Fav word: %s\n", k, &element[k].name);
}
return 0;
}
The compiler error says:
beispiele.c: In function ‘main’:
beispiele.c:199:51: error: conversion to non-scalar type requested
element[j] = (struct data) malloc(sizeof(struct data));
^
beispiele.c:201:3: error: too many arguments for format [-Werror=format-extra-args]
scanf("d", &element[j].age);
^
beispiele.c:203:3: error: too many arguments for format [-Werror=format-extra-args]
scanf("s", &element[j].name);
^
beispiele.c:208:3: error: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘int *’ [-Werror=format=]
printf("%d. Fav number: %d\n", k, &element[k].age);
^
beispiele.c:209:3: error: format ‘%s’ expects argument of type ‘char *’, but argument 3 has type ‘char (*)[20]’ [-Werror=format=]
printf("%d. Fav word: %s\n", k, &element[k].name);
^
cc1: all warnings being treated as errors