C语言关于结构体的输入输出

输出最后的 那个13612,0.....
是什么鬼!? 是怎么乱入的?
#include<stdio.h>
#include<conio.h>
struct date{
int year;
int month;
};

struct book{
int a;
char num[9];
struct date pub;
}b[3];

void input(struct book* p)
{
scanf("%d,%s,%d,%d",&p->a,p->num,&p->pub.year,&p->pub.month);
}

void main()
{
int i;
clrscr();
for(i=0;i<3;i++)
{
input(&b[i]);
}
for(i=0;i<3;i++)
{
printf("%d,%s,%d,%d\n",b[i].a,b[i].num,b[i].pub.year,b[i].pub.month);
}
}

第1个回答  2015-05-21
void input(struct book* p)
{
//scanf("%d,%s,%d,%d",&p->a,p->num,&p->pub.year,&p->pub.month);
//这里 char num[9];数组,按字符串输入 %s不能以逗号分隔,函数无法识别输入结束!
//改成:
scanf("%d %s %d %d",&p->a,p->num,&p->pub.year,&p->pub.month);
//输入以空格分格就可以了!
}本回答被提问者采纳
第2个回答  推荐于2018-05-04
问题出在字符串输入上,在CSDN里有人给出了解决方法,把scanf中的%s换成%[^,]。本回答被网友采纳
相似回答