在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);
}
}
答案 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
是指针的格式说明符。