c - 持续错误:下标值既不是数组也不是指针也不是向量
问题描述
我的大学作业有问题,我希望得到一些帮助。
有问题的代码部分:
#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;
^
你知道这是什么原因吗?我没有声明结构正确吗?
解决方案
首先,
scanf("%s", name[MAXSTRING]);
错了,应该是
scanf("%99s", name);
也就是说,看到该行中的用法
if (st[maxcounter].id > maxid){
是错误的,st
定义为student st
。st
不是数组类型,因此不能对其使用索引,或者换句话说,不能st
用作运算符的操作数[]
。
推荐阅读
- c# - 如何使用包含“ODM”之类的值的 C# 在 excel 中过滤整个列?
- java-stream - 为什么 Hybris modelService.save() 在 ifPresent() 方法中不起作用?
- windows-7 - CDATA [Microsoft.PointOfService.PosControlException:消息访问端口'COM10'被拒绝。/(另一个错误''通信(端口)故障''
- javascript - Node Js无法读取未定义的属性
- verilog - 为什么仿真卡在 Vivado 中
- azure-devops - azure devops - 我的工作排了很长时间
- haskell - 用于表示具有 0 到 5 个值的列表的类型
- php - Codeigniter:查询数据库返回多个结果
- php - 如何在 Laravel 中添加手动分页
- ios - 如何为选定的chartDataSet更改图表中LineChartView中xAxis和yAxis的不同突出显示颜色?