|
5鱼币
- #include<stdio.h>
- #include<stdlib.h>
- struct Book{ //结构体book
- char title[40]; //两个子变量
- char author[40];
- struct Book *next;
- };
- void addBook(struct Book **library); //头插法,添加单链表元素
- void getbook(struct Book *book); //输入标题,作者信息
- void addBook(struct Book **library){
- struct Book *book,*temp;
- book = (struct Book *)malloc(sizeof(struct Book)); //申请一块新的内存存放,这块内存指针交给book
- if(book == NULL){
- printf("调用内存失败\n");
- exit(1);
- }
- getbook(book); // 输入标题,作者信息
-
- if(*library != NULL){ //如果library不指向NULL,链表指针交换
- temp = *library;
- *library = book;
- book->next = temp;
- }
- else{
- *library = book;
- book->next = NULL;
- }
- }
- void getbook(struct Book *book){
- printf("请输入书名:");
- scanf("%s",book->title);
- printf("请输入作者:");
- scanf("%s",book->author);
- }
- int main(){
- struct Book *library = NULL;
- char ch;
- while(1){
- do{
- printf("是否要录入书籍信息Y/N:");
- ch = getchar();
- getchar();
- }while(ch != 'Y' && ch!= 'N'); //输入不是Y,N一直循环
- if(ch == 'Y'){
- addBook(&library); //输入为Y,录入library信息
- }
- else{
- break;
- }
- }
- return 0;
- }
复制代码
输出:
是否要录入书籍信息Y/N:i
是否要录入书籍信息Y/N:Y
请输入书名:飘
请输入作者:我
是否要录入书籍信息Y/N:Y
是否要录入书籍信息Y/N:Y
是否要录入书籍信息Y/N:Y
结果 我第一遍录入是有效的,后面为什么就卡死了呢????
本帖最后由 Croper 于 2019-4-23 19:26 编辑
因为《飘》的作者不是你。。。
//=========================非常正经的分割线==============================
- void getbook(struct Book *book){
- printf("请输入书名:");
- scanf("%s",book->title);
- printf("请输入作者:");
- scanf("%s",book->author);
- }
复制代码
因为你最后一次scanf之后输入流里还留了一个'\n',
加一个getchar()就好
- void getbook(struct Book *book){
- printf("请输入书名:");
- scanf("%s",book->title);
- printf("请输入作者:");
- scanf("%s",book->author);
- getchar();
- }
复制代码
|
最佳答案
查看完整内容
因为《飘》的作者不是你。。。
//=========================非常正经的分割线==============================
因为你最后一次scanf之后输入流里还留了一个'\n',
加一个getchar()就好
|