关于C语言的问题

#include <stdio.h>
#include <stdlib.h>
#define N 219
struct sanguo
{
char name[10];
int a;
int b;
};
int main()
{
int i;
struct sanguo s[N], san;
FILE *fp1;
fp1=fopen("d:\\三国志11.txt","r");
for(i=0; i<N; i++){
while(!feof(fp1)){
fscanf(fp1,"%s%d%d",&s[i].name,&s[i].a,&s[i].b);
}}
for(i=0; i<N;i++)
printf("%s%d%d",&s[i].name,&s[i].a,&s[i].b);
return 0;
}
提示
'%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[10]是什么意思呐

第1个回答  2014-10-17
fscanf

printf

以上两个函数的你都没有用对
因为s[i].name本身是指针,所以不用加地址符

因为s[i].a对应%d,所以也不用加地址符

因为s[i].b应%d,所以也不用加地址符

修改后就没问题了
第2个回答  2014-10-16
1、
'%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[10]

意思是"%s"期望的参数类型是char *,但是参数2的类型是char (*)[10]。

2、你把
printf("%s%d%d",&s[i].name,&s[i].a,&s[i].b);
改为
printf("%s%d%d",s[i].name,s[i].a,s[i].b);
应该就可以了。
第3个回答  2014-10-16
printf("%s%d%d",&s[i].name,&s[i].a,&s[i].b);

不要引用地址阿
printf("%s%d%d",s[i].name,s[i].a,s[i].b);
相似回答