erreur: l'expression doit avoir struct ou union type c
Je travaille sur un code pour enregistrer les noms et les grades des étudiants, puis les rappeler le grade lorsque le nom des élèves sont inscrits.
Voici mon code:
#include <stdio.h>
#define N 10
#define M 2
struct a
{
char name[50];
int grade;
};
int main()
{
int i;
int j;
struct a A[N][M];
for(i=0;i<N;i++)
{
printf("Please Enter Students' Names:/n");
scanf("%s", &A[i].name);
}
for(j=0;j<M;j++)
{
printf("Please Enter Students' Grades:/n");
scanf("%d", &A[j].grade);
}
printf("Which Student's Grades Would You Like To View?/n");
if(scanf("%s", *A[i].name))
{
printf("Their Grade Is:%d/n", *A[j].grade);
}
return 0;
}
J'ai ces erreurs:
hw2problem2.c(21): error: expression must have struct or union type
scanf("%s", &A[i].name);
^
hw2problem2.c(26): error: expression must have struct or union type
scanf("%d", &A[j].grade);
^
hw2problem2.c(29): error: expression must have struct or union type
if(scanf("%s", *A[i].name))
^
hw2problem2.c(31): error: expression must have struct or union type
printf("Their Grade Is:%d/n", *A[j].grade);
^
compilation aborted for hw2problem2.c (code 2)
Aucune aide avec les erreurs ou le programme en général serait appréciée.
Merci.
- Pourquoi un tableau 2D?
Vous devez vous connecter pour publier un commentaire.
Vous avez défini
struct a A
comme un tableau à deux dimensions, et seulement spécifiéune dimension dans
scanf("%s", &A[i].name);
etscanf("%d", &A[j].grade);
.Vous avez un couple de d'autres questions, comme
scanf("%s", &A[i].name);
... où l'&
est inutile.Votre programme devrait ressembler à ceci
Parce que,
A[i]
est de typestruct a*
, passtruct a
. Il devrait être Un[i][j]Logiquement, votre tableau doit être de 1-D. par conséquent, boucle comme:
Si elle est soumise sage, alors il devrait être en 2D et l'utilisation de boucles imbriquées, comme illustré.
Pas besoin d'utiliser
2D
tableau. Essayez simplement de ce..A[i].name
est de plus de 10 caractères etsname
est recherché à l'aide de la même, Va conduire à l'écrasement de la Pile, puisque la taille desname
est de 10 et vous serait de la numérisation de plus de cette valeur, Voir Ici . Aussiunused variable j
.