私のプロジェクトとして、図書館管理システムのプログラムをcでコーディングしています。条件とともに while ループを使用して!feof
、ファイルのbook
. 私はそれを使用すべきではないことを読んだので、そうしなければならない場合は、いくつかの break ステートメントでそれを行う必要があります。ファイルからの変数found
の、while ループを中断するために使用しました。Target
andが ( を使用して)book.bname
一致するたびに、が 1 に設定され、while ループが終了します。これは、このコードの背後で使用したロジックです。これはその一部である構造です。このプログラムには Linux OS を使用しています。どこが間違っているのか教えてください。strcmp
found
book
book.bname
void Searchbook()
{
int i;
char Target[25],stats[3];
int Found=0;
if((librecord=fopen("librecord.txt","r"))==NULL)
printf(" ! The File is Empty...\n\n");
else
{
printf("\nEnter The Name Of Book : ");
scanf("%s",Target);
while(!feof(librecord)&& Found==0)
{
fscanf(librecord,"%d %s %s %d %d",&book.bid,book.bname,book.author,&book.status,&book.nooftitles);
if(strcmp(Target,book.bname)==0)
Found=1;
for(i=0;i<book.nooftitles;i++)
fscanf(librecord,"%s",book.titles);
}
if(Found)
{
if(book.status==IN)
strcpy(stats,"IN");
else
strcpy(stats,"OUT");
printf("\nThe Unique ID of The Book: %d\nThe Name of Book is: %s\nThe Author is: %s\nThe Book Status:%s\n\n",book.bid,book.bname,book.author,stats);
}
else if(!Found)
printf("! There is no such Entry...\n");
fclose(librecord);
}
}
これは、本の名前を入力してから無限ループに直面している機能です。最初に見つけた本の名前を出力する無限ループに入ります。私は何をすべきか?のみではなく2つの条件を使用しているため、私の問題は他の同様の質問とは異なり !feof
ます。 variable
を .として使用していますが、まだ終了flag
しwhile loop
ていません。