Bài toán: Sử dụng ngôn ngữ lập trình C++ để đếm số dòng, số ký tự có trong một file text. Đây là một bài tập cơ bản giúp các bạn có được kiến thức về phần thao tác với file trên ngôn ngữ lập trình C++. Trong bài viết này, tôi sẽ cùng các bạn đi tìm hướng giải quyết bài toán đếm số dòng trong file text và sau cùng là code minh họa do tôi cung cấp. Hãy cũng bắt đầu nào.
Phân tích bài toán
Để hiểu được và làm được bài toán này, bạn cần có kiến thức về đọc ghi file trong C++. Tuy nhiên, bạn cũng đừng lo lắng. Bài viết này sẽ giải thích cho các bạn điều đó.
Ý tưởng:
Nhận thấy rằng, mỗi dòng trong một file text sẽ kết thúc bởi một ký tự xuống hàng n
. Như vậy, ta có thể lợi dụng tính chất này để đếm số dòng trong một file text.
Hàm đọc file sẽ đọc từng ký tự cho tới khi kết thúc file. Như vậy, mỗi khi đọc được 1 ký tự thành công, ta tăng biến đếm số ký tự lên 1.
Như vậy, với vài dòng code và triển khai theo ý tưởng như trên. Bài toán đã được giải quyết.
Gợi ý khóa học: Các thuật toán sắp xếp
Lời giải đếm số dòng trong file text
Đây là code mà mình viết để đếm số dòng trong file text. Code này được thực hiện theo ý tưởng vừa nêu ở trên.
#include <iostream> #include <fstream> using namespace std; int main() { ifstream f1; char c; int numchars, numlines; f1.open("Test.txt"); numchars = 0; numlines = 0; f1.get(c); while (f1) { while (f1 && c != 'n') { numchars = numchars + 1; f1.get(c); } numlines = numlines + 1; f1.get(c); } cout << "The file has " << numlines << " lines and " << numchars << " characters" << endl; return(0); }
Output:
The file has 34 lines and 779 characters
Giải thích:
Dòng f1.get(c)
giúp chúng ta lấy ra từng ký tự và lưu vào biến c
. Chúng ta sẽ đọc chừng nào f1 != null
.
Mỗi khi đọc thành công một ký tự và ký tự đó không phải ký tự xuống hàng, chúng ta tăng biến đếm số ký tự numchars
lên 1 giá trị.
Nếu gặp ký tự xuống hàng n
chúng ta tăng số dòng numlines
lên thêm 1 giá trị.
Kết thúc quá trình đọc, in ra kết quả.
Như vậy, mình đã hoàn thành bài hướng dẫn đếm số dòng trong file text với ngôn ngữ lập trình C++.
Chúc các bạn học tập tốt!
Để lại một bình luận