“->”的无效类型参数(有 '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);