首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >持续错误:下标的值既不是数组,也不是指针或向量

持续错误:下标的值既不是数组,也不是指针或向量
EN

Stack Overflow用户
提问于 2018-05-31 16:52:28
回答 2查看 212关注 0票数 0

我的大学作业出了点问题,我需要一些帮助。

有问题的代码部分:

代码语言:javascript
复制
#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]实例中都会出现以下错误:

代码语言:javascript
复制
 error: subscripted value is neither array nor pointer nor vector
         maxid = st[maxcounter].id;
                   ^

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

EN

回答 2

Stack Overflow用户

发布于 2018-05-31 16:55:53

首先,

代码语言:javascript
复制
  scanf("%s", name[MAXSTRING]);

是错的,那就应该是

代码语言:javascript
复制
scanf("%99s", name);

这就是说,看看这行中的用法

代码语言:javascript
复制
if (st[maxcounter].id > maxid){

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

票数 1
EN

Stack Overflow用户

发布于 2018-05-31 17:10:45

st是函数的参数,它是student类型的单个值。因此,您不能像错误所说的那样给它加上下标。另一方面,t是一个student数组。

看看你的代码,你在哪里

代码语言:javascript
复制
st[maxcounter].id > maxid

你的意思可能是

代码语言:javascript
复制
t[maxcounter].id > maxid
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50620290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档