c语言:用结构体J将图书信息录入,程序有错误,帮忙看一下

#include<stdio.h>
#define N 500
struct book
{
int number;//登录号
char title[N];//书名
char author[N];//作者名
char fenlei[N];//分类号
char press[N];//出版单位
char time[N];//出版时间
float price;//价格
};

int i,n;
struct boo[N];//错误指向这里
int main()
{
printf("===============================================================================\n");
printf("\t\t ******** 1. 图书信息录入 ******** \n");
printf("请输入要录入系统的的图书本数:");
scanf("%d",&n);
for (i=0;i<n;i++)
{
printf("请依次输入第%d本图书的编号、书名、作者名、分类号、出版单位、出版时间、价格\n",i+1);.
scanf("%d%s%s%s%s%ld",&boo[i].number,boo[i].title,boo[i].author,boo[i].fenlei,boo[i].press,boo[i].time,&boo[i].price);
}
}
错误:
f:\学习\图书馆输入.c(15) : error C2059: syntax error : '['
f:\学习\图书馆输入.c(24) : error C2143: syntax error : missing ';' before '.'
int i,n;

struct book boo[N];
int main()
{
printf("请输入要录入系统的的图书本数:");
scanf("%d",&n);
for (i=0;i<n;i++)
{
printf("请依次输入第%d本图书的编号、书名、作者名、分类号、出版单位、出版时间、价格\n",i+1);
scanf("%d%s%s%s%s%ld",&boo[i].number,boo[i].title,boo[i].author,boo[i].fenlei,boo[i].press,boo[i].time,&boo[i].price);
}
}
为什么只能输入第一个图书信息呢?后面的不能输入


#include<stdio.h>
#define N 500
struct book
{
int number;//登录号
char title[N];//书名
char author[N];//作者名
char fenlei[N];//分类号
char press[N];//出版单位
char time[N];//出版时间
float price;//价格
};

int i,n;
struct book boo[N];//book是自定义的结构体类型,就好比int一样是不能直接用作变量,要使用必须用该结构体类型申明一个变量,比如这里改的
int main()
{
printf("===============================================================================\n");
printf("\t\t      ********   1. 图书信息录入   ********                  \n");
    printf("请输入要录入系统的的图书本数:");
scanf("%d",&n);
for (i=0;i<n;i++)
{
printf("请依次输入第%d本图书的编号、书名、作者名、分类号、出版单位、出版时间、价格\n",i+1);//分号后多了一个.,删除它
scanf("%d%s%s%s%s%f",&boo[i].number,boo[i].title,boo[i].author,boo[i].fenlei,boo[i].press,boo[i].time,&boo[i].price);//scanf中的格式控制符"%d%s%s%s%s%ld"应该改为%f,因为boo[i].price是float型
}
}

追问

都改过来了,还是不能运行第一个后面的是为什么呢?

追答scanf("%d %s %s %s %s %ld", &boo[i].number,boo[i].title,boo[i].author,boo[i].fenlei,boo[i].press,boo[i].time,&boo[i].price);
格式控制符只有6个,后面的变量却有7个,明显漏了个格式控制符,另外在格式控制符中间加上空格,输入数据的时候用空格隔开
另外,在for循环体scanf语句后面加上while(getchar()!='\n') ;

追问

那个那个...还是不对

追答

我可以输入呀,我用的程序是:

#include<stdio.h>
#define N 500
struct book
{
int number;//登录号
char title[N];//书名
char author[N];//作者名
char fenlei[N];//分类号
char press[N];//出版单位
char time[N];//出版时间
float price;//价格
};

int i,n;
struct book boo[N];//错误指向这里
int main()
{
printf("===============================================================================\n");
printf("\t\t      ********   1. 图书信息录入   ********                  \n");
    printf("请输入要录入系统的的图书本数:");
scanf("%d",&n);
for (i=0;i<n;i++)
{
printf("请依次输入第%d本图书的编号、书名、作者名、分类号、出版单位、出版时间、价格\n",i+1);
scanf("%d%s%s%s%s%s%f",&boo[i].number,boo[i].title,boo[i].author,boo[i].fenlei,boo[i].press,boo[i].time,&boo[i].price);
}
}

你对照看看,如果还是不能正常运行,建议不用VC,VC里很多bug有时候会莫名其妙出问题

追问

就是不能运行T.T.......复制你的这个也是一个情况,难道是软件问题T.T.......总之,谢谢你啦*-*

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-21
struct book boo[n]
写全了试试

但是说实话,里边的n如果不确定,可能编译不了,因为这个时候,N没有赋值,你试试
相似回答