高手帮我看看哪错了。c语言

[复制链接]
查看11 | 回复2 | 2011-4-8 09:59:34 | 显示全部楼层 |阅读模式
#include
#define MAX 30
typedef struct
{
int num;
char name[MAX];
char author[MAX];
int prize;
}seq;
void main()
{
int i,j,len;
seq booklist[MAX];
len=j=0;
for(i=1;i<=MAX;i++)
{
printf("/plz insert book info:\n");
scanf("%d,%s,%s,%d",&booklist.num,booklist.name,booklist.author,&booklist.prize);
if (booklist.num==0)break;

j++;
}
len=j;
printf("list lenght is %d and the list is: \n",len);
for(i=1;i<=len;i++)
{
printf("%d,%s,%s,%d",booklist.num , booklist.name , booklist.author , booklist.prize);
printf("\n");
}
}
是做一个书本信息的顺序表,这只是录入部分,没报错,不过运行的时候最后老有些乱码,不知道怎么改了,高手帮忙啊,运行结果见图


回复

使用道具 举报

千问 | 2011-4-8 09:59:34 | 显示全部楼层
输入问题你的scanf("%d,%s,%s,%d",&booklist.num,booklist.name,booklist.author,&booklist.prize); 语句 加上输入的 1,sd,sad,3 没有正确赋值, 1给了booklist.num是对的,剩下的sd,sad,3赋值给了booklist.name,然后后面两个变量就没实际赋值就是乱码了。因为 字符串的读入是读到回车符的 要修改的话就分开读入字符串
回复

使用道具 举报

千问 | 2011-4-8 09:59:34 | 显示全部楼层
你的数组越界了,booklist[30],那么数组应该是booklist[0]~booklist[29],改成for(i=0;i<MAX;i++)试一下。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行