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
Bài liên quan
Bạn thử đổi lại
gets(ten);
thànhgetline(cin, ten);
xem có được không.Không được bạn ah.Mình không biết vì sao lại gặp lỗi này.
Khi mình khai báo là
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
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 đỡ