Member 12592442 Ответов: 1

Это не работает! Я хочу добавить новую книгу в свою библиотечную запись


#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
int main()
{	FILE *librecord;
	char another='Y';
	struct book
	{	
		char bname[40];
		int bid;
	};
	struct book b[100];
	librecord=fopen("librecord.txt","w");
	if(librecord==NULL)
	{	
		puts("Cannot open file!");
		exit(1);
	}
	while(another=='Y')
	{
		printf("\nEnter name and id of Book\n");
		scanf("%s %d\n",book.bname,&book.bid);
		fprintf(librecord,"%s %d\n","book.bname,book.bid");
		printf("Add Another Record(Y/N)");
		another=getche();
	}
	fclose(librecord);
	return 0;
}


Что я уже пробовал:

Я пробовал это много раз. На самом деле я хочу создать функцию добавления книг в свою библиотеку с их уникальными идентификаторами,введенными пользователем.

Andreas Gieriet

Что же это за симптом?
- у вас нет переменной book
- этот fprintf call действительно имеет жестко закодированные бессмысленные строковые аргументы
- этот b[100] не использовать
- вы не проверяете наличие ошибок со стороны scanf

Овации
Энди

1 Ответов

Рейтинг:
0

leon de boer

Что сказал Андреас Гиерит но я немного расширюсь так как вам не хватает переменной
Вам нужен номер книги, на которой вы находитесь, который начинается с нуля и увеличивается каждый раз, когда вы нажимаете "Y", так что он начинается так

int onBook = 0;

Вы создали массив книг под названием b, теперь вы используете его (зачем создавать его, если вы его не используете) .. эта строка неверна
scanf("%s %d\n",book.bname,&book.bid);

должно быть
scanf("%s %d\n",b[onBook].bname,&b[onBook].bid);

Get it onBook - это индекс книги в массиве b, в который вы загружаете данные.

Я оставлю вам возможность увеличивать onBook, когда вы нажимаете "Y", и вам, вероятно, нужно убедиться, что он не увеличивается по длине массива b.