1
Đếm số lượng chữ cái của chuỗi S đọc từ file sử dụng hàm con trong C?
1
Cộng đồng đã đăng:

Cho tệp dữ liệu INPUT gồm 1 dòng ghi xâu S, làm thế nào để lập trình sử dụng chương trình con đếm xem xâu S có bao nhiêu chữ cái?

thêm bình luận...
0
Nhân Nguyên60 đã đăng:

Tạo con trỏ file, sau đó sử dụng hàm fgetc kết hợp với vòng lặp while để duyệt từng ký tự, đối với mỗi ký tự đi qua, sử dụng hàm isalpha được hỗ trợ bởi thư viện <ctype.h> để kiểm tra xem nó có phải là chữ cái hợp lệ hay không, nếu có tăng biến đếm count lên, cứ như thế cho đến hết chuỗi.

#include <stdio.h>
#include <ctype.h>

int demSoChuCai(FILE *file, const char *filePath) {
    file = fopen(filePath, "r");

    if (file == NULL) {
        printf("Khong the mo file de doc.\n");
        return -1;
    }

    int count = 0;
    char character;

    while ((character = fgetc(file)) != EOF) {

        // Với mỗi ký tự, kiểm tra xem nó có phải chữ cái hay không?
        if (isalpha(character)){
            count++;
        }
    }

    return count;
}

int main() {
    FILE *f = NULL;
    int soChuCai = demSoChuCai(f, "input.txt");
    printf("Co tong cong %d chu cai.\n", soChuCai);
}

Chương trình trên giả sử file input.txt nằm cùng trong thư mục chứa mã nguồn nhé, nếu không bạn sẽ phải sử dụng đường dẫn tuyệt đối, ví dụ như C:\Path\to\file\input.txt.

Hope it help.

đã bổ sung 5.0 năm trước bởi

Mọi người nên lưu ý rằng hàm isalpha chỉ đúng nếu ký tự của file input ở dạng ASCII nhé, còn nếu là ký tự Unicode ví dụ như tiếng Việt mình thì chắc chắn sẽ báo bị lỗi ngay, cẩn thận.

Member4628 23.04.2019

Mình không được phép sử dụng thư viện isalpha của ctype thì chỗ điều kiện làm sao để xét xem đó có phải là ký tự không vậy?

Cộng đồng 24.04.2019

Bạn có thể so sánh với khoảng từ a-z và từ A-Z, nằm trong khoảng này là ký tự hợp lệ.

if ((character >= 'a' && character < 'z') || (character >= 'A' && character <= 'Z')) {
    count++;
}
trungkfc02 24.04.2019
thêm bình luận...
Bạn đang thắc mắc? Ghi câu hỏi của bạn và đăng ở chế độ cộng đồng (?)