Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Lỗi tràn bộ nhớ khi đọc tập tin trong OOP

  1. #1
    Ngày gia nhập
    10 2017
    Bài viết
    1

    Mặc định Lỗi tràn bộ nhớ khi đọc tập tin trong OOP

    Tình hình là 3 ngày rồi e vẫn làm chưa đc.
    Đề bài là:
    cho file input có chứa thông tin sau:
    INPUT.TXT:
    B02E1 12 4
    D01A3 23 8
    B90N0 5 2
    thứ tự lần lượt là mã số, cân nặng, tuổi
    B là Con Bò, D là con dê
    giờ đầu tiên là em chỉ nhận file trước để biết dòng nào là bò, nào là gà.
    Đây là code nhận dạng của e, em làm theo hướng đối tượng nhé.
    void CNongTrai::Nhap()
    {
    string loai;
    int i = 0;
    do
    {
    CConVat *a = NULL;
    cin >> loai;
    if (loai[0] == 'B')
    a = new CBo;
    if (loai[0] == 'D')
    a = new CDe;
    int pos = cin.tellg();
    cin.seekg(pos - 5);
    a->Nhap();
    dscv[i] = a;
    i++;
    } while (!cin.eof());
    sl = i;
    }
    e nhận dạng đc hết 3 dòng trên, vấn đề ở chỗ là e đã dùng !cin.eof() để kiểm tra đến cuối file chưa nhưng nó vẫn lặp vô tận và kết quả là tràn bộ nhớ,
    anh/chị nào cho e ý kiến ạk,


    http://codepad.org/TAh7MC3H
    đây là toàn bộ code của e, àk mà file De.cpp, và Bo.cpp e khỏi post vì trong đó k có lệnh gì cả

    - - - Nội dung đã được cập nhật ngày 31-10-2017 lúc 10:59 AM - - -

    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		lỗi21.jpg
Lần xem:	1
Size:		136.3 KB
ID:		59097
    lỗi đây ạk
    thanks for watching

  2. #2
    Ngày gia nhập
    07 2015
    Nơi ở
    Viet Nam
    Bài viết
    99

    Do hàm eof() chưa nhận được ký tự EOF nên vòng lặp là vô hạn.
    Code trên là do bạn nhập từ stdin, mình không thấy bạn đang đọc file.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn