我的大学任务有问题,我希望得到一些帮助。
有问题的代码部分:
#include <stdio.h>
#include <stdlib.h>
#define MAXSTRING 100
int counter = 0;
int maxcounter = 0;
int maxid = 0;
typedef struct{
char name[MAXSTRING];
int id;
}student;
int AddStudent(student st, student *stArray) {
student t[] = {"",0};
int id;
char name[MAXSTRING];
printf("First enter the student's id\n");
scanf("%d", &id);
printf("Now enter the student's name\n");
scanf("%s", name[MAXSTRING]);
if (st[maxcounter].id > maxid){
maxid = t[maxcounter].id;
}
maxcounter++;
t[maxcounter].id = id;
t[maxcounter].name = name;
printf("%d", t[maxcounter].id);
}
在t[maxcounter]
的每个实例中都会出现以下错误:
error: subscripted value is neither array nor pointer nor vector
maxid = st[maxcounter].id;
^
你知道是什么导致了这个吗?我没有宣布结构正确吗?
答案 0 :(得分:1)
首先,
scanf("%s", name[MAXSTRING]);
错了,应该是
scanf("%99s", name);
那说,看看行中的用法
if (st[maxcounter].id > maxid){
错误,因为st
定义为student st
。 st
不是数组类型,因此您无法对其使用索引,换句话说,您无法使用st
作为[]
运算符的操作数。
答案 1 :(得分:0)
st
是函数的参数,它是student
类型的单个值。因此,您无法按错误所述下标。另一方面,t
是student
的数组。
查看您的代码,
st[maxcounter].id > maxid
你可能意味着
t[maxcounter].id > maxid