%d期望c中的int *

时间:2016-08-21 15:05:29

标签: c

据我所知,%d需要一个int值。我不明白为什么gcc编译器会说它期望int *。

这是我的代码:

#include<stdio.h>
#include<stdlib.h>

struct student
{
    int rn, m[5];
    char nm[25];
};

int main()
{
    struct student* s[5];
    struct student **q=s;

    int i = 0;

    printf("Enter data");

    for(i=0;i<5;i++)
    {
        printf("\nStudent %d:\n",i+1);
        printf("Roll number: ");
        scanf("%d",(s[i])->rn);
        printf("\n%d",s[i]->rn);
    }
}

这是警告:

warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘int’ [-Wformat=]
scanf("%d",(s[i])->rn);

3 个答案:

答案 0 :(得分:2)

scanf将值读入int,它将指向要读入的变量的指针。

scanf("%d",&((s[i])->rn));

答案 1 :(得分:0)

printfint获取%d,但scanf获取intint *)的地址,以便它可以存储转换后的价值。

答案 2 :(得分:0)

RTFM会有所帮助。 scanf和相关函数(sscanf等)总是需要它们读取值的变量的指针。 scanf documentation