首页 > 解决方案 > 持续错误:下标值既不是数组也不是指针也不是向量

问题描述

我的大学作业有问题,我希望得到一些帮助。

有问题的代码部分:

#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;
                   ^

你知道这是什么原因吗?我没有声明结构正确吗?

标签: cpointersstructdeclaration

解决方案


首先,

  scanf("%s", name[MAXSTRING]);

错了,应该是

scanf("%99s", name);

也就是说,看到该行中的用法

if (st[maxcounter].id > maxid){

是错误的,st定义为student stst不是数组类型,因此不能对其使用索引,或者换句话说,不能st用作运算符的操作数[]


推荐阅读