-
11-01-2016, 06:36 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Lỗi khi nhập xuất dữ liệu sử dụng biến char từ file
Chào các bác. Tình hình là mình mới vọc C++, nên có câu nào gà quá các bác bỏ quá cho ạ :P
Mình tập viết một đoạn code đơn giản để đọc dữ liệu từ file này rồi ghi sang file khác, nhưng muốn sử dụng kiểu dữ liệu char để đọc từng ký tự một. Code này của mình khi xuất ra file out thì ký tự cuối của chuỗi luôn bị lặp 2 lần.
Ví dụ file input của mình là : Cong dong C Viet
Thì output sẽ là : Cong dong C Viett
Mình có đọc trên mạng thì đoán là do ký tự cuối (ở ví dụ này là "t") còn lưu trong bộ nhớ của máy, nên khi đọc cái eof (hay cái ký tự vô hình cuối cùng nào đó mà máy k thèm lưu vào bộ nhớ) thì máy nó in ra 2 lần ký tự cuối ("tt").
Mong các cao nhân vào chỉ giáo giúp ạ [IMG]images/smilies/smile.png[/IMG] Có cách nào để chữa lỗi này không ạ? Mọi người có thể chia sẻ chút kinh nghiệm khi nhập xuất file trong C++ không ạ?
Mình thấy trên mạng mọi người hay nhập xuất bằng scanf với prinf. Có ai có tài liệu gì về thư viện này không ạ?
Cảm ơn mọi người nhiều ạ!
Mã:#include <iostream> #include <fstream> #include <string> using namespace std; int main () { char c; ifstream inp ("input.txt"); ofstream out ("output.txt"); while (! inp.eof()) { inp.get(c); out.put(c); } out.close (); inp.close (); return 0; }
View more random threads:
- Ai biết hàm canh tọa độ trong c++ 2008 ko?
- Cách đọc file theo dòng .... Helpppppp me !
- Hàm nào trong C giống hàm fFillChar của Pascal?
- Hỏi về hàm textcolor.
- Giải giúp mình giải bài tập này với
- Hỏi về vòng lặp for?
- Truyền tham số là mảng 2 chiều
- Vẽ đường tròn bằng TB.C 3.1 như thế nào?
- Cho em hỏi về số Pytago
- m.n giúp mk cái chương trình sắp xếp này với mk cứ bị lỗi kết quả thui
-
12-01-2016, 02:09 PM #2Banned
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Cảm ơn các bác ạ [IMG]images/smilies/biggrin.png[/IMG] <3
-
12-01-2016, 07:03 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
- bạn có thể kiểm tra giá trị trả về của hàm get trong while (!inp.eof), nếu =NULL thì break.
- hoặc bạn kiểm tra hàm get trong điều kiện của while.
-
12-01-2016, 07:37 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
đọc kí tự cuối của file rồi đọc thêm một lần nữa mới có eof.
sửa lại
Mã:while (inp.get(c)) { out.put(c); }
Mã:copy(istream_iterator<char>(inp), istream_iterator<char>(), ostream_iterator<char>(out));
Thông qua phân tích dữ liệu Google từ 86 quốc gia, mới đây, một công ty tại Anh đã công bố bảng xếp hạng kích tấc "cậu nhỏ" của các nước trên thế giới. Kết quả, hầu hết các nước xếp ở nhóm đầu của...
"Chim" của chàng trai Việt thuộc...