user-0 提问: 那位大大看看这个程序哪里出问题了？

回复:
user: user-1
content: enter_reader函数中，  fscanf(reader,"%d%20s%d\n",&READER.number,temp,num);   num应该是&num吧

user: user-0
content: 有点长，分开两次发

user: user-0
content: int enter_reader(void) { //录入读者信息 	FILE *reader; 	char agree,temp[MAX]; 	int num; 	reader = fopen("reader.txt","r+"); 	printf("请输入新增的读者信息（姓名 所借图书编号）\n"); 	scanf("%s %d",&READER.name,&READER.bookborrowed); 	while(!feof(reader)) 		fscanf(reader,"%d%20s%d\n",&READER.number,temp,num); 	fprintf(reader,"%d%20s%10d\n",READER.number+1,READER.name,READER.bookborrowed); 	printf("回到选择操作面板请输入“Y”\n"); 	getchar(); 	agree = getchar(); 	if(agree == 89) 		swit(); 	fclose(reader); 	return 0; }  int enter_book(void) { //录入书籍信息 	FILE *book; 	char agree,temp[MAX]; 	int num; 	book = fopen("book.txt","r+"); 	printf("请输入新增的书籍信息（书名 数目）\n"); 	scanf("%s %d",&BOOK.name,&BOOK.amount); 	while(!feof(book)) 		fscanf(book,"%d%20s%d\n",&BOOK.num,temp,&num); 	fprintf(book,"%d%20s%10d\n",BOOK.num+1,BOOK.name,BOOK.amount); 	printf("回到选择操作面板请输入“Y”\n"); 	getchar(); 	agree = getchar(); 	if(agree == 89) 		swit(); 	fclose(book); 	return 0; }  int conrrect_reader(void) { //修改读者信息 	int readernum,bookborrowed; 	char readername[MAX]; 	FILE *reader = fopen("reader.txt","r"); 	FILE *rereader = fopen("rereader.txt","w"); 	printf("请输入要修改的读者的编号\n"); 	scanf("%d",&readernum); 	printf("请输入该读者新的信息（姓名 所借图书的编号）\n"); 	scanf("%s %d",&readername,&bookborrowed); 	while(!feof(reader)) { 		fscanf(reader,"%d%20s%10d\n",&READER.number,&READER.name,&READER.bookborrowed); 		if(readernum != READER.number) 			fprintf(rereader,"%d%20s%10d\n",READER.number,READER.name,READER.bookborrowed); 		else 			fprintf(rereader,"%d%20s%10d\n",READER.number,readername,bookborrowed); 	} 	printf("操作成功！\n"); 	fclose(reader); 	fclose(rereader); 	remove("reader.txt"); 	rename("rereader.txt","reader.txt"); 	return 0; }  int conrrect_book(void) { //修改书籍信息 	int booknum,bookamount; 	char bookname[MAX]; 	FILE *book = fopen("book.txt","r"); 	FILE *rebook = fopen("rebook.txt","w"); 	printf("请输入要修改的书籍的编号\n"); 	scanf("%d",&booknum); 	printf("请输入该书籍新的信息（书名 数量）\n"); 	scanf("%s %d",&bookname,&bookamount); 	while(!feof(book)) { 		fscanf(book,"%d%20s%10d\n",&BOOK.num,&BOOK.name,&BOOK.amount); 		if(booknum != READER.number) 			fprintf(rebook,"%d%20s%10d\n",BOOK.num,BOOK.name,BOOK.amount); 		else 			fprintf(rebook,"%d%20s%10d\n",BOOK.num,bookname,bookamount); 	} 	printf("操作成功！\n"); 	fclose(book); 	fclose(rebook); 	remove("book.txt"); 	rename("rebook.txt","book.txt"); 	return 0; }  int delet_reader(void) { //删除读者信息 	int readernum; 	FILE *reader = fopen("reader.txt","r"); 	FILE *rereader = fopen("rereader.txt","w"); 	printf("请输入要删除的读者的编号\n"); 	scanf("%d",&readernum); 	while(!feof(reader)) { 		fscanf(reader,"%d%20s%10d\n",&READER.number,&READER.name,&READER.bookborrowed); 		if(readernum != READER.number) 			fprintf(rereader,"%d%20s%10d\n",READER.number,READER.name,READER.bookborrowed); 		else 			; 	} 	printf("操作成功！\n"); 	fclose(reader); 	fclose(rereader); 	remove("reader.txt"); 	rename("rereader.txt","reader.txt"); 	return 0; }  int delet_book(void) { //删除书籍信息 	int booknum; 	FILE *book = fopen("book.txt","r"); 	FILE *rebook = fopen("rebook.txt","w"); 	printf("请输入要删除的书籍的编号\n"); 	scanf("%d",&booknum); 	while(!feof(book)) { 		fscanf(book,"%d%20s%10d\n",&BOOK.num,&BOOK.name,&BOOK.amount); 		if(booknum != BOOK.num) 			fprintf(rebook,"%d%20s%10d\n",BOOK.num,BOOK.name,BOOK.amount); 		else 			; 	} 	printf("操作成功！\n"); 	fclose(book); 	fclose(rebook); 	remove("book.txt"); 	rename("rebook.txt","book.txt"); 	return 0; }  int swit(void) { 	int handle = 0; 	printf("请输入您要进行的操作的编号：\n1.查询书籍信息\n2.录入读者信息\n3.录入书籍信息\n4.修改读者信息\n5.修改书籍信息\n6.删除读者信息\n7.删除书籍信息\n8.退出\n"); 	scanf("%d",&handle); 	getchar(); 	switch(handle) { 		case 1: 			admin_search(); 			break; 		case 2: 			enter_reader(); 			break; 		case 3: 			enter_book(); 			break; 		case 4: 			conrrect_reader(); 			break; 		case 5: 			conrrect_book(); 			break; 		case 6: 			delet_reader(); 			break; 		case 7: 			delet_book(); 			break; 		case 8: 			return 0; 		default: 			printf("输入错误，请重新输入：\n"); 			swit(); 			break; 	}; 	return 0; }  int borrow(int readernum,int booknum) { 	int flag = 1; 	FILE *reader = fopen("reader.txt","r"); 	FILE *rereader = fopen("rereader.txt","w"); 	FILE *book = fopen("book.txt","r"); 	FILE *rebook = fopen("rebook.txt","w"); 	while(!feof(book)) { 		fscanf(book,"%d%20s%10d\n",&BOOK.num,&BOOK.name,&BOOK.amount); 		if(booknum != BOOK.num) 			fprintf(rebook,"%d%20s%10d\n",BOOK.num,BOOK.name,BOOK.amount); 		else if(BOOK.amount == 0) { 			printf("书已被借光\n"); 			flag = 0; 			fprintf(rebook,"%d%20s%10d\n",BOOK.num,BOOK.name,BOOK.amount); 		} else 			fprintf(rebook,"%d%20s%10d\n",BOOK.num,BOOK.name,BOOK.amount-1); 	} 	while(!feof(reader)) { 		fscanf(reader,"%d%20s%10d\n",&READER.number,&READER.name,&READER.bookborrowed); 		if(readernum != READER.number) 			fprintf(rereader,"%d%20s%10d\n",READER.number,READER.name,READER.bookborrowed); 		else if(!flag) 			fprintf(rereader,"%d%20s%10d\n",READER.number,READER.name,READER.bookborrowed); 		else 			fprintf(rereader,"%d%20s%10d\n",READER.number,READER.name,booknum);  	} 	if(flag) 		printf("借阅成功！\n"); 	fclose(reader); 	fclose(rereader); 	remove("reader.txt"); 	rename("rereader.txt","reader.txt"); 	fclose(book); 	fclose(rebook); 	remove("book.txt"); 	rename("rebook.txt","book.txt"); }  int bring(void) { 	int readernum,booknum,flag = 1; 	printf("请输入你的读者编号\n"); 	scanf("%d",&readernum); 	FILE *reader = fopen("reader.txt","r"); 	FILE *rereader = fopen("rereader.txt","w"); 	FILE *book = fopen("book.txt","r"); 	FILE *rebook = fopen("rebook.txt","w"); 	while(!feof(reader)) { 		fscanf(reader,"%d%20s%10d\n",&READER.number,&READER.name,&READER.bookborrowed); 		if(readernum != READER.number) 			fprintf(rereader,"%d%20s%10d\n",READER.number,READER.name,READER.bookborrowed); 		else if(READER.bookborrowed == 0) { 			printf("您不需要还书\n"); 			fprintf(rereader,"%d%20s%10d\n",READER.number,READER.name,READER.bookborrowed); 			flag = 0; 		} else { 			fprintf(rereader,"%d%20s%10d\n",READER.number,READER.name,0); 			booknum = READER.bookborrowed; 		} 	} 	while(!feof(book)) { 		fscanf(book,"%d%20s%10d\n",&BOOK.num,&BOOK.name,&BOOK.amount); 		if(booknum != BOOK.num) 			fprintf(rebook,"%d%20s%10d\n",BOOK.num,BOOK.name,BOOK.amount); 		else if(!flag) 			fprintf(rebook,"%d%20s%10d\n",BOOK.num,BOOK.name,BOOK.amount); 		else 			fprintf(rebook,"%d%20s%10d\n",BOOK.num,BOOK.name,BOOK.amount+1); 	} 	if(flag) 		printf("还书成功！\n"); 	fclose(reader); 	fclose(rereader); 	remove("reader.txt"); 	rename("rereader.txt","reader.txt"); 	fclose(book); 	fclose(rebook); 	remove("book.txt"); 	rename("rebook.txt","book.txt"); }

user: user-0
content: #include<stdio.h> #include<string.h>  #define MAX 100  struct reader { 	int number; 	char name[MAX]; 	int bookborrowed; } READER; struct book { 	int num; 	char name[MAX]; 	int amount; } BOOK;  int contents(void);//查询书目 int reader_search(void);//读者的查询 int admin_search(void);//管理员的查询 int enter_reader(void);//录入读者信息 int enter_book(void);//录入书籍信息 int conrrect_reader(void);//修改读者信息 int conrrect_book(void);//修改书籍信息 int delet_reader(void);//删除读者信息 int delet_book(void);//删除书籍信息 int swit(void);//管理员的选择 int borrow(int readernum,int booknum);//借书的函数 int bring(void);//还书的函数  int main() { 	char readerenter; 	char pass[8],c; 	printf("管理员请输入password，读者请回车\n"); 	gets(pass); 	if(strcmp(pass,"password") == 0) { //管理员的诸项操作 		swit(); 	} else { //读者的诸项操作 		printf("回车查询书目，输入“B”还书，其他输入查询详细信息\n"); 		readerenter = getchar(); 		if(readerenter == '\n') { 			contents(); 		} else if(readerenter == 'B') { 			bring(); 		} else { 			reader_search(); 		} 	} 	return 0; }  int contents(void) { //查询书目 	char agree; 	char line[MAX]; 	FILE *book; 	if((book = fopen("book.txt","r")) == NULL) 		printf("无书籍信息\n"); 	else 		printf("编号 书名 数量\n"); 	while(1) { 		fgets(line,MAX,book); 		if(feof(book)) 			break; 		printf("%s",line); 	} 	fclose(book); 	printf("借阅请输入“Y”\n"); 	agree = getchar(); 	if(agree == 'Y') 		reader_search(); 	return 0; }  int reader_search(void) { //读者的查询 //输入编号或书名，查询书籍信息 	FILE *book; 	FILE *reader; 	int choose = 0,booknum,readernum,key = 0; 	char booknam[MAX],line[MAX],c; 	printf("请输入：\n1.编号\n2.书名\n"); 	while(choose != 1 && choose != 2) 		scanf("%d",&choose); 	book = fopen("book.txt","r"); 	reader = fopen("reader.txt","r"); 	if(choose == 1) { 		printf("请输入书籍编号\n"); 		scanf("%d",&booknum); 		while(!feof(book)) { 			fscanf(book,"%d%20s%10d\n",&BOOK.num,&BOOK.name,&BOOK.amount); 			if(booknum == BOOK.num ) { 				printf("编号 书名 数量\n"); 				printf("%d%20s%10d\n",BOOK.num,BOOK.name,BOOK.amount); 				key = 1; 				break; 			} 		} 	} 	if(choose == 2) { 		printf("请输入书名\n"); 		scanf("%s",booknam); 		while(!feof(book)) { 			fscanf(book,"%d%20s%10d\n",&BOOK.num,&BOOK.name,&BOOK.amount); 			if(strcmp(booknam,BOOK.name) == 0) { 				printf("编号 书名 数量\n"); 				printf("%d%20s%10d\n",BOOK.num,BOOK.name,BOOK.amount); 				booknum = BOOK.num; 				key = 1; 				break; 			} 		} 	} 	if(key == 0) { 		printf("查无此书，请重新查询\n"); 		reader_search(); 	} else { 		printf("查询完毕，输入“Y”重新查询，回车借阅\n"); 		getchar(); 		scanf("%c",&c); 		if(c == 'Y') 			reader_search(); 		else { 			printf("请输入你的读者编号\n"); 			scanf("%d",&readernum); 			while(READER.number == readernum) { 				fscanf(reader,"%d%20s%d\n",&READER.number,&READER.name,&READER.bookborrowed); 			} 			if(READER.bookborrowed != 0) { 				printf("请先还书\n"); 				return 1; 			} else { 				printf("编号 姓名 借阅\n"); 				printf("%d%20s%10d\n",READER.number,READER.name,BOOK.num); 			} 		} 		fclose(reader); 		fclose(book); 		borrow(readernum,booknum); 	} 	return 0; }  int admin_search(void) { //管理员的查询 //输入编号，查询书籍信息和借阅情况 	FILE *book; 	FILE *reader; 	int choose = 0,booknum,readernum,key = 0; 	char booknam[MAX],line[MAX],c; 	printf("请输入：\n1.编号\n2.书名\n"); 	while(choose != 1 && choose != 2) 		scanf("%d",&choose); 	book = fopen("book.txt","r"); 	reader = fopen("reader.txt","r"); 	if(choose == 1) { 		printf("请输入书籍编号\n"); 		scanf("%d",&booknum); 		while(!feof(book)) { 			fscanf(book,"%d%20s%10d\n",&BOOK.num,&BOOK.name,&BOOK.amount); 			if(booknum == BOOK.num ) { 				printf("编号 书名 数量\n"); 				printf("%d%20s%10d\n",BOOK.num,BOOK.name,BOOK.amount); 				key = 1; 				break; 			} 		} 	} 	if(choose == 2) { 		printf("请输入书名\n"); 		scanf("%s",booknam); 		while(!feof(book)) { 			fscanf(book,"%d%20s%10d\n",&BOOK.num,&BOOK.name,&BOOK.amount); 			if(strcmp(booknam,BOOK.name) == 0) { 				printf("编号 书名 数量\n"); 				printf("%d%20s%10d\n",BOOK.num,BOOK.name,BOOK.amount); 				booknum = BOOK.num; 				key = 1; 				break; 			} 		} 	} 	if(key == 0) { 		printf("查无此书，请重新查询\n"); 		admin_search(); 	} else { 		printf("这些人借了这本书\n"); 		while(!feof(reader)) { 			fscanf(reader,"%d%20s%d\n",&READER.number,&READER.name,&READER.bookborrowed); 			if(READER.bookborrowed == booknum) { 				printf("%d%20s%10d\n",READER.number,READER.name,BOOK.num); 			} 		} 	} 	swit(); 	return 0; }