用函数void编译错误

时间:2014-12-02 15:49:25

标签: c

在c编程语言中,我在这个函数中遇到编译错误,有人能告诉我什么错了吗?我在编译后得到了这个:

  

tak.c:在函数'ispis'中:tak.c:30:2:警告:格式'%d'需要   类型为'int'的参数,但参数4的类型为'int *'[-Wformat]

这是代码:

#include <stdio.h>
struct takmicar {
    char ime[20];
    char prez[20];
    int god;
    char drz[4];
};

void ispis (struct takmicar niz[50], int n) {
int i;
for (i=0; i<n; i++) {
    printf ("%s %s %d %s \n", niz[i].ime, niz[i].prez, &niz[i].god, niz[i].drz);
}
}

2 个答案:

答案 0 :(得分:3)

这是因为您正在尝试打印整数,但您正在使用。

&niz[i].god

作为一个论点,而不是。

niz[i].god

在C中,&amp;运算符返回变量的地址,该变量应由指针处理,因此如果要打印niz[i].god地址%d更改为%p

答案 1 :(得分:3)

您的编译器非常有用,因为printf格式化字符串不匹配,相应的值会在运行时为您提供未定义的行为

如果要显示该值,请写niz[i].god(即删除运算符地址&)。

如果要显示指针值,请写入printf ("%s %s %p %s \n", ...)%p是指针的格式说明符。