[英]persistent error: subscripted value is neither array nor pointer nor vector
我在做大學作業時遇到問題,我希望得到一些幫助。
有問題的代碼部分:
#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]
的每個實例中, t[maxcounter]
出現以下錯誤:
error: subscripted value is neither array nor pointer nor vector
maxid = st[maxcounter].id;
^
你知道是什么原因造成的嗎? 我沒有聲明結構正確嗎?
首先,
scanf("%s", name[MAXSTRING]);
是錯的,應該是
scanf("%99s", name);
也就是說,看到該行的用法
if (st[maxcounter].id > maxid){
是錯誤的,因為st
被定義為student st
。 st
不是數組類型,因此不能在其上使用索引,換句話說,不能將st
用作[]
運算符的操作數。
st
是函數的參數,它是student
類型的單個值。 因此,您不能按照錯誤說明對它進行下標。 另一方面t
是一群student
。
查看您的代碼,在哪里
st[maxcounter].id > maxid
你可能是說
t[maxcounter].id > maxid
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.