30/09/2018, 18:22

Thoát khỏi code sau câu lệnh GETS(char * )

Đoạn code của em như sau ;
1- Khai báo lớp.head

class CBook
{
	
	char *ten;
	int soquyen;
	int chomuon;

public:
	//- Phương thức nhập dữ liệu cho đối tượng từ bàn phím. Các thông tin cần nhập là tên sách, tổng số sách, số đã cho mượn.
	void Input()
	{
		//cout << "
  Tensach : ";fflush(stdin);gets(ten);
		cout  << "
 So QUYEN : ";cin >> soquyen;
		cout << "
  Tensach : ";fflush(stdin);gets(ten);
		cout <<"
 Da Cho Muon : ";cin >> chomuon;
		//cout << "
  Tensach : ";cin >> ten;

	}
	//- Phương thức in thông tin đối tượng ra màn hình bao gồm tên, tổng số và số đã cho mượn
	void Output()
	{
		cout << "
  Tensach : " <<ten;
		cout  << "
 So QUYEN : " <<soquyen;
		cout <<"
 Da Cho Muon : "<<chomuon;
	}
	int Conlai()
	{
		return  soquyen	- chomuon;
	}
	CBook(void);
	~CBook(void);
};

Doan ham chính


#include "Book.h"

int main()
{//Trên cơ sở lớp xây dựng được, viết chương trình chính làm các công việc sau:
//- Nhập danh sách các quyển sách với số lượng sách cần nhập được cho từ bàn phím.
//- Đưa ra màn hình thông tin về các quyển sách hiện có trong thư viện (số sách còn lại phải lớn hơn 0).
	CBook book;
	int N;
	do
	{
		cout << "
 Nhap tong so cuon sach : ";cin >> N;
		//CBook*p = (CBook*)malloc(N * sizeof(CBook));
	}while(N<0);
	CBook*p = (CBook*)malloc(N * sizeof(CBook));
	for(int i = 0; i < N; i++)
	{
		(p+i)->Input();
	}
	for(int i =0 ; i < N ; i++)
	{
		(p+i )->Output();
	}
	return 0;

}

Lỗi em gặp là khi em nhập vao tên của cuốn sách đầu tiên thì chương trình kết thúc.Em không hiểu tại sao có lỗi đó.Mong các pro hướng dẫn giúp em với ah

viết 20:31 ngày 30/09/2018

Bạn thử đổi lại gets(ten); thành getline(cin, ten); xem có được không.

Nam Nguyễn Xuân viết 20:23 ngày 30/09/2018

Không được bạn ah.Mình không biết vì sao lại gặp lỗi này.

Nam Nguyễn Xuân viết 20:30 ngày 30/09/2018

Khi mình khai báo là

char ten[50];

thì chạy ngon lành .
Vì thế mình nghĩ ra có lẽ do cấp phát bộ nhớ
Mình đổi lại thanh

char *ten;
// VA cap phat bo nho cho con tro
ten = new char ();

Thi chay duoc ten gom co 1 khoang trang
Nhung khi minh chay ten vd: "Nam Nguyen Xuan " thi bi day ra ngoai chuong trinh.
Thực sự mình không hiểu rõ bản chất vấn đề ở đây là bị thế nào.Và nên làm gf.
Mong các bạn giúp đỡ

Bài liên quan
0