“->”的无效类型参数(有 'int')
invalid type argument of '->' (have 'int')
我在编译代码时收到以下报告的错误。可以请你纠正我错误的地方吗?
invalid type argument of ->
(have int
)
我的代码如下:
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
typedef struct bundles
{
char str[12];
struct bundles *right;
}bundle;
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
unsigned long N;
scanf("%lu", &N);
bundle *arr_nodes;
arr_nodes = malloc(sizeof(bundle)*100);
int i=5;
for(i=0;i<100;i++)
{
scanf("%s", &arr_nodes+i->str);
printf("%s", arr_nodes+i->str);
}
return 0;
}
我在这些方面遇到问题:
scanf("%s", &arr_nodes+i->str);
printf("%s", arr_nodes+i->str);
你是说
scanf("%s", (arr_nodes+i)->str);
没有括号 ->
运算符被应用于 i
而不是增加的指针,该符号经常令人困惑,特别是因为 this
scanf("%s", arr_nodes[i].str);
会完全一样。
您还应该检查 malloc()
是否 return NULL
并验证 scanf()
是否成功扫描。
你需要
scanf("%s", (arr_nodes+i)->str);
printf("%s", (arr_nodes+i)->str);
您的原始代码与
相同
scanf("%s", &arr_nodes+ (i->str) );
因为 ->
的优先级高于 +
,所以你会得到那个错误。
根据 operator precedence,->
的优先级高于 +
。您需要将代码更改为
scanf("%s", (arr_nodes+i)->str);
我在编译代码时收到以下报告的错误。可以请你纠正我错误的地方吗?
invalid type argument of
->
(haveint
)
我的代码如下:
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
typedef struct bundles
{
char str[12];
struct bundles *right;
}bundle;
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
unsigned long N;
scanf("%lu", &N);
bundle *arr_nodes;
arr_nodes = malloc(sizeof(bundle)*100);
int i=5;
for(i=0;i<100;i++)
{
scanf("%s", &arr_nodes+i->str);
printf("%s", arr_nodes+i->str);
}
return 0;
}
我在这些方面遇到问题:
scanf("%s", &arr_nodes+i->str);
printf("%s", arr_nodes+i->str);
你是说
scanf("%s", (arr_nodes+i)->str);
没有括号 ->
运算符被应用于 i
而不是增加的指针,该符号经常令人困惑,特别是因为 this
scanf("%s", arr_nodes[i].str);
会完全一样。
您还应该检查 malloc()
是否 return NULL
并验证 scanf()
是否成功扫描。
你需要
scanf("%s", (arr_nodes+i)->str);
printf("%s", (arr_nodes+i)->str);
您的原始代码与
相同scanf("%s", &arr_nodes+ (i->str) );
因为 ->
的优先级高于 +
,所以你会得到那个错误。
根据 operator precedence,->
的优先级高于 +
。您需要将代码更改为
scanf("%s", (arr_nodes+i)->str);