Không thể in ra danh sách

Em mới học hàm và có viết hàm như này nhưng khi chạy thì cái phần xuất sách ra thì không thấy gì còn phần nhập sách em vẫn nhập như thường ạ.Ai xem giúp em lỗi ở đâu để em cải thiện ạ.Em cảm ơn.

 #include<stdio.h>
#include<math.h>
#include<string.h>
typedef struct sach{char tenSach[20], tacGia[30]; int namSX;
};
void nhapSach();
void xuatSach();

void nhapSach(int n, sach s[])
{
	int i;
	printf("Nhap so sach:");
	scanf("%d",&n);
	printf("\tNhap thong tin cho sach\n");
	for(i=0; i<n; i++)
	{
		printf("Quyen sach thu %d\n",i+1);
		printf("\tTen sach:"); fflush(stdin);
		gets(s[i].tenSach);
		printf("\tTac gia:"); fflush(stdin);
		gets(s[i].tacGia);
		printf("\tNam san xuat:");
		scanf("%d",&s[i].namSX);
	}
}
void xuatSach(int n, sach s[])
{
	int i;
	printf("Xuat thong tin sach\n");
	for(i=0; i<n; i++)
	{
		printf("Quyen sach thu %d\n",i+1);
		printf("\3tTen sach: %s\n",s[i].tenSach);
		printf("\3tTac gia: %s\n",s[i].tacGia);
		printf("\3tNam san xuat:\n",s[i].namSX);
	}
}
int main()
{
	sach s[1000];
	int n;
	nhapSach(n, s);
	xuatSach(n, s);
}
#include<stdio.h>
#include<math.h>
#include<string.h>
typedef struct sach{
    char tenSach[20], tacGia[30]; 
    int namSX;
};

void nhapSach();
void xuatSach();

void nhapSach(int *n, struct sach s[])
{
	int i;
	printf("Nhap so sach:");
	scanf("%d",n);
// 	printf()
	printf("\tNhap thong tin cho sach\n");
	for(i=0; i<*n; i++)
	{
		printf("Quyen sach thu %d\n",i+1);
		printf("\tTen sach:"); fflush(stdin);
		gets(s[i].tenSach);
		printf("\tTac gia:"); fflush(stdin);
		gets(s[i].tacGia);
		printf("\tNam san xuat:");
		scanf("%d",&s[i].namSX);
	}
}
void xuatSach(int *n, struct sach s[])
{
	int i;
	printf("Xuat thong tin sach\n");
	for(i=0; i<n; i++)
	{
		printf("Quyen sach thu %d\n",i+1);
		printf("\3tTen sach: %s\n",s[i].tenSach);
		printf("\3tTac gia: %s\n",s[i].tacGia);
		printf("\3tNam san xuat:\n",s[i].namSX);
	}
}

int main()
{
	struct sach s[1000];
	int n;
	nhapSach(&n, s);
	xuatSach(n, s);
}
1 Like

Lý do mà ban không in ra được là do bạn gọi hàm nhapSach thì biến n được truyền theo kiểu tham trị. Thế nên khi ra khỏi hàm thì nó vẫn là 0 (giá trị mặc định chưa khởi tạo). Vì vậy bạn cần truyền tham chiếu để n thay đổi giá trị trong hàm

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