CÁC HÀM C / C++
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Hàm isdigit() trong C/C++

Trong quá trình xử lý dữ liệu và văn bản trong lập trình, việc kiểm tra tính hợp lệ của các ký tự là một yêu cầu phổ biến. Trong C/C++, hàm isdigit() là một công cụ hữu ích để kiểm tra xem một ký tự có phải là một chữ số hay không. Trong phần này, mình sẽ tìm hiểu về hàm isdigit(), cách sử dụng và ứng dụng của nó trong việc xử lý dữ liệu số trong ngôn ngữ lập trình C/C++.

Hàm isdigit() trong C/C++

Cú pháp của hàm isdigit()

Trong ngôn ngữ lập trình C/C++, hàm isdigit() được định nghĩa trong thư viện <cctype> hoặc <ctype.h>.

Cú pháp của hàm isdigit() như sau:

int isdigit(int ch);

Hàm này trả về một giá trị nguyên, thường là 0 hoặc một số khác không, đại diện cho tính hợp lệ của ký tự số được chuyển đầu vào.

Ví dụ về hàm isdigit()

Kiểm tra xem ký tự có phải là một chữ số hay không:

#include <iostream>
#include <cctype>

int main() {
    char ch = '5';
    // Bài viết được đăng tại freetuts.net

    if (isdigit(ch)) {
        std::cout << ch << " la mot chu so." << std::endl;
    } else {
        std::cout << ch << " khong phai la chu so." << std::endl;
    }
    
    return 0;
}

Output:

5 la mot chu so.

Kiểm tra tính hợp lệ của một chuỗi số

#include <iostream>
#include <cctype>
#include <string>

int main() {
    std::string str = "12345";
    bool isValid = true;
    // Bài viết được đăng tại freetuts.net

    for (char ch : str) {
        if (!isdigit(ch)) {
            isValid = false;
            break;
        }
    }
    
    if (isValid) {
        std::cout << "Chuoi " << str << " chi chua cac chu so." << std::endl;
    } else {
        std::cout << "Chuoi " << str << " khong chi chua cac chu so." << std::endl;
    }
    
    return 0;
}

Output:

Chuoi 12345 chi chua cac chu so.

Trong các ví dụ trên, hàm isdigit() được sử dụng để kiểm tra tính hợp lệ của các ký tự trong chuỗi và hiển thị kết quả tương ứng.

Cách sử dụng hàm isdigit() trong C/C++

Kiểm tra xem một ký tự có phải là chữ số hay không

#include <iostream>
#include <cctype>

int main() {
    char ch = '9';
    // Bài viết được đăng tại freetuts.net

    if (isdigit(ch)) {
        std::cout << ch << " la mot chu so." << std::endl;
    } else {
        std::cout << ch << " khong phai la chu so." << std::endl;
    }

    return 0;
}

Output:

9 la mot chu so.

Trong ví dụ này, mình kiểm tra xem ký tự '9' có phải là một chữ số hay không bằng cách sử dụng hàm isdigit(). Vì '9' là một chữ số, nên kết quả trả về là "9 la mot chu so".

Xây dựng chương trình đơn giản kiểm tra tính hợp lệ của chuỗi số

#include <iostream>
#include <cctype>
#include <string>

int main() {
    std::string str = "12345";
    bool isValid = true;

    for (char ch : str) {
        if (!isdigit(ch)) {
            isValid = false;
            break;
        }
    }
    // Bài viết được đăng tại freetuts.net

    if (isValid) {
        std::cout << "Chuoi " << str << " chi chua cac chu so." << std::endl;
    } else {
        std::cout << "Chuoi " << str << " khong chi chua cac chu so." << std::endl;
    }

    return 0;
}

Output:

Chuoi 12345 chi chua cac chu so.

Trong ví dụ này, mình kiểm tra tính hợp lệ của chuỗi "12345" bằng cách sử dụng vòng lặp để duyệt qua từng ký tự trong chuỗi và kiểm tra xem chúng có phải là chữ số hay không. Sau đó, chương trình hiển thị kết quả tương ứng.

Lưu ý khi sử dụng hàm isdigit() trong C/C++

Giới hạn của hàm isdigit()

Hàm isdigit() trong ngôn ngữ lập trình C/C++ chỉ có thể kiểm tra tính hợp lệ của các ký tự số trong bảng mã ASCII. Điều này có nghĩa là nó chỉ nhận diện được các ký tự số từ '0' đến '9' và không thể xử lý các ký tự số trong các bảng mã khác nằm ngoài phạm vi của hàm này.

Hạn chế khi áp dụng hàm isdigit()

Không nhận diện được ký tự số ngoài phạm vi ASCII:

#include <iostream>
#include <cctype>

int main() {
    char ch = '๑'; // Ký tự số Thái Lan
     // Bài viết được đăng tại freetuts.net

    if (isdigit(ch)) {
        std::cout << ch << " la mot chu so." << std::endl;
    } else {
        std::cout << ch << " khong phai la chu so." << std::endl;
    }

    return 0;
}

Output:

๑ khong phai la chu so.

Trong ví dụ này, ký tự '๑' (ký tự số Thái Lan) không được nhận diện là một chữ số bởi vì hàm isdigit() chỉ nhận diện được các ký tự số trong bảng mã ASCII.

Không nhận diện được ký tự trong chuỗi số không có dấu phân cách:

#include <iostream>
#include <cctype>

int main() {
    char ch = '.'; // Dấu chấm
     // Bài viết được đăng tại freetuts.net

    if (isdigit(ch)) {
        std::cout << ch << " la mot chu so." << std::endl;
    } else {
        std::cout << ch << " khong phai la chu so." << std::endl;
    }

    return 0;
}

Output:

. khong phai la chu so.

Trong ví dụ này, dấu chấm không được nhận diện là một chữ số bởi vì hàm isdigit() chỉ nhận diện được các ký tự số từ '0' đến '9'.

Kết bài

Hàm isdigit() trong ngôn ngữ lập trình C/C++ là một công cụ hữu ích để kiểm tra tính hợp lệ của các ký tự số trong chuỗi văn bản. Tuy nhiên, cần lưu ý rằng hàm này chỉ nhận diện được các ký tự số trong bảng mã ASCII, và không thể xử lý các ký tự số trong các bảng mã khác nằm ngoài phạm vi này. Điều này cần được xem xét khi sử dụng trong các ứng dụng cụ thể. Việc hiểu rõ giới hạn và hạn chế của hàm này sẽ giúp cho việc sử dụng hàm isdigit() trở nên hiệu quả trong quá trình lập trình.

test php

Bài giải

-------------------- ######## --------------------

Câu hỏi thường gặp liên quan:

Cùng chuyên mục:

Các hàm xử lý mảng đa chiều (array.h) trong C/C++

Các hàm xử lý mảng đa chiều (array.h) trong C/C++

Các hàm xử lý ngày tháng (datetime.h) trong C/C++

Các hàm xử lý ngày tháng (datetime.h) trong C/C++

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý thời gian (time.h) trong C

Các hàm xử lý thời gian (time.h) trong C

Thread Pools và Parallel Algorithms trong C++

Thread Pools và Parallel Algorithms trong C++

Tạo và quản lý các Multithreading trong C++

Tạo và quản lý các Multithreading trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Try, Catch, và Throw của Exception Handling trong C++

Try, Catch, và Throw của Exception Handling trong C++

Cách sử dụng Lambda Expressions trong C++

Cách sử dụng Lambda Expressions trong C++

Sử dụng weak_ptr trong C++

Sử dụng weak_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng unique_ptr trong C++

Sử dụng unique_ptr trong C++

Tổng quan về Smart Pointers trong C++

Tổng quan về Smart Pointers trong C++

Sử dụng Iterators trong STL của C++

Sử dụng Iterators trong STL của C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng trong List trong C++

[Iterator] Sử dụng trong List trong C++

[STL] Sử dụng Vector trong C++

[STL] Sử dụng Vector trong C++

Tổng quan về Iterators trong C++

Tổng quan về Iterators trong C++

[STL] Các hàm thường dùng của lớp Vector trong C++

[STL] Các hàm thường dùng của lớp Vector trong C++

Top