69,371
社区成员
发帖
与我相关
我的任务
分享
scanf("%s %s %d\n", &Book[i].title, &Book[i].author, &Book[i].book_id);//这样会吃掉输入的回车,回车就不能结束输入了。
//改成
scanf(" %s %s %d", &Book[i].title, &Book[i].author, &Book[i].book_id); //第一个字符串不允许空白,空行等,输入的空白符,会被吃掉
//或者
scanf("%s %s %d", &Book[i].title, &Book[i].author, &Book[i].book_id);//第一个字符串可以是空白,空行等
PS:
输入的时候,开始的回车(等空白符)可以吃掉,
如果不需要输入一行的空格,以及空行等的的话
结尾的回车,不要吃掉,因为scanf 输入,是以回车结束的
如果格式的最后是空白符,
就会把所有输入的空白符吃掉直到输入非空白为止。
#include <stdio.h>
#include <string.h>
struct Books
{
char title[50];
char author[50];
int book_id;
};
int main()
{
struct Books Book[2];
int i, j;
/*给结构体数组赋值*/
for (i = 0; i <= 2; i++)
{
scanf("%s %s %d", &Book[i].title, &Book[i].author, &Book[i].book_id);
}
/*显示结构体内容*/
for (j = 0; j <= 2; j++)
{
printf("Book[%d] title : %s\nBook[%d] author : %s\nBook[%d] book_id : %d\n", j, Book[j].title, j, Book[j].author, j, Book[j].book_id);
}
return 0;
}