簡體   English   中英

持續錯誤:下標值既不是數組也不是指針也不是向量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM