Lỗi đọc file txt trên ubuntu

Chào m.n. Mình sử dụng code::Blocks code C++ trên ubuntu.
Khi mình đọc file txt với dữ liệu được lưu như sau:
sv1
8
9
sv2
8
8
thì nó bị lỗi như vậy:


Mình ko hiểu tại sao lại tọt đâu ra 2 số 0 và 6. Rõ ràng mình code trên visual bên windown chạy vẫn đúng.
Đây là hàm đọc file của mình.

while (!f.eof())
		{

			getline(f, s.name);

			getline(f, dt);
			s.diemtoan = atof(dt.c_str());

			getline(f, dl);
			s.diemly = atof(dl.c_str());

			cout << s.name << "\n";

			cout << s.diemtoan << "\n";

			cout << s.diemly << "\n";
		}

Mong mọi nguời giúp đỡ. Mình cảm ơn.

Bạn để dấu trắng ở cuối file.
Khi bạn in ra, bạn có thể thấy có 1 khoảng trắng ở dòng thứ 3 từ cuối lên, đó chính là dấu trắng cuối file. Còn 2 điểm toán và điểm lý thì mình nghĩ là giá trị rác vì bạn chẳng getline được gì từ file nữa cả.
Còn error log của bạn khó nhìn quá, bạn có thể copy lại error log rồi up lên đây được không?

1 Like

Cảm ơn bạn. Vấn đề mình mắc phải là làm sao xử lý 2 cái dữ liệu rác kia. Mình code trên ubuntu thì nó bị lỗi thế. Nhưng bên windown chạy vẫn đúng bạn à.! Chẳng hiểu tại sao nữa.

File chứa dữ liệu bạn tạo ra ban đầu dùng Notepad bên Windows phải không? Nếu vậy, hãy mở nó ra bằng gedit bên Ubuntu, sửa lại và save lại xem sao. Có khi vấn đề là ký tự kết thúc dòng EOF bên Windows và bên Linux khác nhau nên getline là hiểu khác nhau.

1 Like

ok. thank ban. De minh thu tim hieu xem.

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