Đếm dòng trong 1 file

em có đề bài này từ thấy giáo :frowning: ai giúp em với

On the server, there is a file located in “/usr/share/dict/words” that
contains a dictionary of English words, about 100,000 of them, one per line.

Write a program which opens this file and counts the number of lines (words)
in it.

Bài này đơn giản mà, bạn dùng vòng lặp đọc từng ký tự trong file, khi nó bằng kí tự qua dòng mới thì tăng biến đếm lên 1, đến khi đọc hết file thì tăng biến đếm thêm 1 lần nữa, do cứ mỗi lần qua 1 dòng mới nó mới tăng, thành ra tới dòng cuối nó không thể tăng nên mình phải tăng cho nó bên ngoài vòng lặp.
Code mẫu:

#include <iostream>
#include <fstream>
int main()
{
    int Count = 0;
    std::ifstream FileIn("<địa chỉ của file>"); // mở file
    while (!FileIn.eof()) // kiểm tra xem đã tới cuối file chưa
    {
        char c;
        FileIn.get(c); // ghi 1 ký tự từ file vào biến c
        if (c == 10)//kiểm tra xem c có phải là ký tự qua dòng mới không (LF)
            ++Count;
    }
    ++Count;
    FileIn.close();
    std::cout << Count;
    return 0;
}
1 Like

em xin thông tin facebook hoặc email được không ạ ? em cần hỏi thêm 1 vài câu hỏi nữa ạ

Bạn cứ gửi câu hỏi thẳng lên topic này hoặc message (nếu câu hỏi có tính riêng tư) nhé !

dạ vâng, rồi ví dụ bài thay đổi thành đếm xem có bao nhiêu từ bắt đầu bằng chữ S cả in hoa và thường thì em có được sử dụng mấy cái như string không ạ ?

Bài này thay vì bạn đọc từng ký tự như code trên thì bạn sẽ đọc từng từ

int count = 0;
std::ifstream FileIn("<địa chỉ file>");
while (!FileIn.eof())
{
       std::string str;
       FileIn >> str; // nhập vào str 1 từ từ FileIn
       if (str.at(0) == 'S' || str.at(0) == 's') // Nếu ký tự đầu tiên là S hoặc s thì tăng biến đếm
              ++count;
}
FileIn.close();
std::cout << count;

Code trên chưa test nhưng thuật toán là như vậy, bạn chạy thử, nếu không được thì báo lại mình sẽ sửa, còn đúng rồi thì tham khảo, thắc mắc thì hỏi nhé !

anh check mail hộ em nhé , em gửi cau hỏi cho anh roi ạ, mong anh giup em

Câu hỏi của bạn

Bạn có create topic nói về vấn đề này rồi !

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