error: subscripted value is neither array nor pointer nor vector
时间: 2024-02-23 21:59:49 浏览: 598
这个错误通常发生在你试图对一个非数组、非指针、非向量类型的值进行下标操作时。例如,你可能会写出以下代码:
```
int x = 10;
x[0] = 5;
```
这样的代码就会导致上述错误。要解决这个错误,你需要确认你对的是一个数组、指针或向量类型的值,并且确保你正确地使用了下标操作符。
相关问题
a.c:56:25: error: subscripted value is neither array nor pointer nor vector printf("%c",c[i][ii]);
这个错误的意思是你在尝试对一个非数组、非指针、非向量类型的值进行下标访问操作,编译器不知道你想要访问什么。可能是你在代码中使用了一个不正确的数据类型或者变量名拼写错误导致了这个问题。
可以检查一下,代码中是否有这样的地方:使用了一个不是数组或指针的数据类型来进行下标访问操作。或者是变量名拼写错误,导致编译器找不到正确的变量。
如果你无法确认问题所在,可以将相关代码段贴出来,我们一起看看。
json.l:21:7: error: subscripted value is neither array nor pointer nor vector yylval[strlen(yylval)-1]=0;修改后出现以下错误
这个错误是因为 yylval 是一个 YYSTYPE 类型的变量,而不是一个字符串类型的数组,所以不能使用字符串的下标操作。正确的做法是将 yylval 强制转换为字符串类型,然后再使用字符串函数。修改代码如下:
```c
desc : %%
{str} {
yylval.str = strdup(yytext+1);
yylval.str[strlen(yylval.str)-1]=0;
return STR;
}
{def} {
if(strcmp(yytext,"true")==0){
return TRUE;
}else if(strcmp(yytext,"false")==0){
return FALSE;
}else if(strcmp(yytext,"null")==0){
return NIL;
}else{
yylval.str = strdup(yytext);
return STR;
}
}
{num} {
yylval.str = strdup(yytext);
return NUM;
}
{arrs} { return ARRS; }
{arre} { return ARRE; }
{objs} { return OBJS; }
{obje} { return OBJE; }
{desc} { return DESC; }
{split} { return SPLIT; }
{space} {}
%%
```
同时,记得在 json.y 中将 YYSTYPE 定义为:
```c
%union {
char *str;
}
%token<str> STR
%token<str> NUM
```
这样就可以正确地读取字符串并将其保存到 YYSTYPE 类型的变量中了。
阅读全文