#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <conio.h>
typedef int BOOL;
typedef struct bookinfo
{
char number[15];/*產品編號*/
char name[30];/*產品名稱*/
float price;/*單價*/
char auther[20];/*作者*/
BOOL isExit;/*存在狀態*/
char lendername[20];/*借書人姓名*/
char lendersex[2];/*借書人性別*/
char lendernum[15];/*借書人學號*/
}BOOKINFO;
void choice_1_input_new()/*輸入新進的圖書信息*/
{
char choice;
FILE *p;
BOOKINFO newbook;
system("cls");
while(1)
{
printf("輸入圖書編號:");
gets(newbook.number);
printf("輸入圖書名稱:");
gets(newbook.name);
printf("輸入圖書單價(小數點後一位):");
scanf("%f",&newbook.price);
while(getchar()!='\n');
printf("輸入圖書的作者:");
gets(newbook.auther);
printf("輸入借書人姓名:");
gets(newbook.lendername);
printf("輸入借書人性別:");
gets(newbook.lendersex);
printf("輸入借書人學號:");
gets(newbook.lendernum);
printf("是否保存該條書目?(Y/N)\n");
choice=getchar();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getchar();
if(choice=='Y'||choice=='y')
{
if(newbook.lendername=="\r"||newbook.lendersex=="\r"||newbook.lendernum=="\r")
newbook.isExit=1;//將圖書狀態設置成1,表示沒有借出
else
newbook.isExit=0;//將圖書狀態設置成0,表示借出
p=fopen("c:\\bookinfo.txt","w");
fwrite(&newbook,sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n該條書目已添加到c:\\bookinfo.txt文件中!\n");
}
else
printf("\n本條書目未保存!\n");
}
}
void main()
{
choice_1_input_new();
}
你那中情況估計是你編譯器的問題,但是你這個程序中有一點小錯誤,就是你輸入一本圖書的信息之後輸入第二本就會出現一點小錯誤。
你在那個保存信息的那個子函數裡加一個getchar函數吸收掉那個回車換行的符號
至於我加那個int main 跟return 0;是因為編譯器不能通過void main 我用的是dev c++這個編譯器