In thông tin của n đầu sách bị in thừa ra số 0

Cho e hỏi sao e xuất ra màn hình nó cứ bị thừa số 0 vậy ạ. Bị sai ở đậu ạ.
Đề bài là nhập n đầu sách từ tệp. Với dòng đầu là số đầu sách, 3 dòng tiếp theo là tên sách, tên tác giả, năm sản xuất.

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct {
	char TS[30],TTG [20];
	int NXB;
}Book;
void nhap( Book *& book, int *n,FILE *fi){
	fscanf(fi,"%d",n);
	char s[30];
	book = ( Book*)malloc(sizeof(Book)*(*n));
	for (int i = 0; i < *n; i++){
		fgets(s,30,fi);
		s[strlen(s)-1]='\0';
		strcpy(book[i].TS,s);
		fgets(s,20,fi);
		s[strlen(s)-1]='\0';
		strcpy(book[i].TTG,s);
		fscanf(fi,"%d",&book[i].NXB);
	}
}
void xuat ( Book *book, int n,FILE *fo){
	for ( int i =0; i < n ;i++){
		printf("%s%s\t%d\n",book[i].TS,book[i].TTG,book[i].NXB);
	}
}
int main (){
	 int n;
	 Book *book;
	 FILE *fi=fopen("input.txt","rt");
	 FILE *fo=fopen ("output.txt","w");
	 nhap(book,&n,fi);
	 xuat(book,n,fo);
	 fclose(fi);
	 fclose(fo);
}

File vào là

3
giai tich
Van hai
1998
van hoc
dong ha
1882
tieng anh
van dong
1998

Chỗ này sửa thành như dưới cho dễ nhìn

printf("%20s|%20s|%6d\n",book[i].TS,book[i].TTG,book[i].NXB);

Sửa lại thành fscanf(fi,"%d\n",n);

Sửa lại thành fscanf(fi,"%d\n",&book[i].NXB);
Vào sao thì ra vậy. :grin:
Nghĩ xem sao lại phải sửa thành vậy đi. Không ra thì hỏi tiếp :grin:

5 Likes

Oki. Cảm ơn b nhièu :heart_eyes:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?