【发布时间】:2017-11-28 20:10:55
【问题描述】:
#include<stdio.h>
struct employee
{
char name[25] ;
int id ;
int age ;
float inc ;
} b[3] ;
int main()
{
int i ;
for(i = 0 ; i < 3 ; i++)
{
printf("Enter name , id , age , inc of employee %d :- ",i+1) ;
scanf("%s%d%d%f",&b[i].name,&b[i].id,&b[i].age,&b[i].inc) ;
}
printf("\n") ;
for(i = 0 ; i < 3 ; i++)
{
printf("%s%d%d%f\n",b[i].name,b[i].id,b[i].age,b[i].inc) ;
}
return 0 ;
}
编译输出:
警告:格式“%s”需要“char ”类型的参数,但参数的类型为“char ()[25]”[-Wformat=] scanf("%s%d%d%f",&b[i].name,&b[i].id,&b[i].age,&b[i].inc) ;
如何修复警告?
【问题讨论】:
-
在
b[i].name上不需要& -
数组名称,如
b[i].name,将decay to a pointer。不需要&。 -
@KevinDTimm 在
scanf你可以。 -
@HenriMenke - 不,你没有
-
您是否尝试过引用 C 引用?甚至还有一个工作示例:cplusplus.com/reference/cstdio/scanf
标签: c