Cách sử dụng con trỏ trong Struct và cấu trúc lồng nhau trong C

Mn check lỗi giúp e với !
Ý tường của bài : e muốn khi nhập số lượng tác giả thì sẽ cấp phát cho nó từng đó ô nhớ, nhưng e vẫn chưa thành thạo con trỏ lên vẫn có lỗi

#include<stdio.h>
#include<stdlib.h>

typedef struct{
	char nameAuthor[20];
	int age;
}author;

typedef struct {
	char name[20];
	int noOfAuthor;
	author *book_author;
	int page;
}book;

int main()
{
	book b;
	gets(b.name);
	
	scanf("%d\n",&b.noOfAuthor);
	b.book_author = (author*)calloc(b.noOfAuthor,sizeof(author));
	int i=0;
	for(i=0 ; i<b.noOfAuthor ; i++)
	{
		while(getchar() != '\n');
		gets((b.book_author->nameAuthor)+i);
		scanf("%d",((b.book_author->age)+i));
	}
    while(getchar() != '\n');
	scanf("%d",&b.page);
	return 0;
}

Biết 2 dòng này sai ở đâu không?

4 Likes

mình không, nên bạn chỉ ra lỗi sai và giải thích giúp mình với ạ :sweat_smile:

Vừa hay, có 1 chủ đề đang được mọi người bàn tán, bạn vào xem thử, có khi hiểu rằng bạn sai ở đâu: Con trỏ trỏ tới một phần tử?

3 Likes

mình đã đọc hết nhưng vẫn không khai sáng thêm được điều gì :sweat_smile:

thế nên mong b chỉ cụ thể lỗi sai và cách khắc phục với ạ

		gets((b.book_author+i)->nameAuthor);
		scanf("%d",(b.book_author+i)->age);

Bạn muốn truy xuất vào các phần tử của biến nào thì cộng i ở biến đó.

1 Like

vâng, mình cám ơn ạ :sweat_smile:

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