SPr*_*han 0 c pointers operator-precedence invalid-argument dereference
我编译代码时收到下面报告的错误.你能错误地纠正我吗?
无效的类型参数
->
(有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;
}
Run Code Online (Sandbox Code Playgroud)
我在这些方面面临问题:
scanf("%s", &arr_nodes+i->str);
printf("%s", arr_nodes+i->str);
Run Code Online (Sandbox Code Playgroud)
你的意思是
scanf("%s", (arr_nodes+i)->str);
Run Code Online (Sandbox Code Playgroud)
没有括号的->
操作符被应用于i
而不是增加的指针,这种符号经常令人困惑,特别是因为这
scanf("%s", arr_nodes[i].str);
Run Code Online (Sandbox Code Playgroud)
会做同样的事情.
您还应该检查malloc()
没有返回NULL
并验证是否scanf()
成功扫描.