devc++ 运行错误 输入没完成就结束

img

#include <stdio.h>

struct Book
{
char title[124];
char author[40];
float price;
unsigned int date;
char publisher[40];
} book; //变量另一种声明,此时是全局变量(在其他函数中也可以使用)

int main()
{
printf("请输入书名: ");
scanf("%s",book.title);
printf("请输入作者: ");
scanf("%s",book.author);
printf("请输入售价: ");
scanf("%f",&book.price);
printf("请输入出版日期: ");
scanf("%d",book.date);
printf("请输入出版社: ");
scanf("%s",book.publisher);

printf("\n======数据录入完毕=====");

printf("书名:%s\n",book.title);
printf("作者:%s\n",book.author);
printf("售价:%f\n",book.price);
printf("出版日期:%d\n",book.date);
printf("出版社:%s\n",book.publisher);

return 0;

}

请问是为什么?

所有数字类型都要加取地址符 &


#include <stdio.h>

struct Book
{
char title[124];
char author[40];
float price;
unsigned int date;
char publisher[40];
} book; //变量另一种声明,此时是全局变量(在其他函数中也可以使用)

int main()
{
printf("请输入书名: ");
scanf("%s",book.title);
printf("请输入作者: ");
scanf("%s",book.author);
printf("请输入售价: ");
scanf("%f",&book.price);
printf("请输入出版日期: ");
scanf("%d",&book.date);
printf("请输入出版社: ");
scanf("%s",book.publisher);

printf("\n======数据录入完毕=====");
 
printf("书名:%s\n",book.title);
printf("作者:%s\n",book.author);
printf("售价:%f\n",book.price);
printf("出版日期:%d\n",book.date);
printf("出版社:%s\n",book.publisher);
 
return 0;
}


img

#include <stdio.h>

struct Book
{
char title[124];
char author[40];
float price;
unsigned int date;
char publisher[40];
} book; //变量另一种声明,此时是全局变量(在其他函数中也可以使用)

int main()
{
printf("请输入书名: ");
scanf("%s",&book.title);
printf("请输入作者: ");
scanf("%s",&book.author);
printf("请输入售价: ");
scanf("%f",&book.price);
printf("请输入出版日期: ");
scanf("%d",&book.date);
printf("请输入出版社: ");
scanf("%s",&book.publisher);
printf("\n======数据录入完毕=====");

printf("书名:%s\n",book.title);
printf("作者:%s\n",book.author);
printf("售价:%f\n",book.price);
printf("出版日期:%d\n",book.date);
printf("出版社:%s\n",book.publisher);

return 0;
}
细节!