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

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

Trong lập trình C/C++, việc làm việc với chuỗi là một phần quan trọng và phổ biến. Để xử lý chuỗi một cách hiệu quả, các hàm thư viện đã được cung cấp để thực hiện các tác vụ cơ bản như tính độ dài của chuỗi, sao chép chuỗi, so sánh chuỗi, và nhiều tác vụ khác. Trong bài này, mình sẽ tìm hiểu về một trong những hàm quan trọng nhất trong thư viện chuỗi của C/C++, đó là hàm strlen().

Hàm strlen() được sử dụng để tính độ dài của một chuỗi kết thúc bằng ký tự null-terminator (\0). Trong phần tiếp theo, mình sẽ đi sâu vào cú pháp, cách sử dụng, cũng như các vấn đề liên quan đến hàm này. Hãy cùng tìm hiểu!

Cú pháp và cách sử dụng hàm strlen() trong C/C++

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

size_t strlen(const char *str)

Trong đó:

  • str: Con trỏ đến chuỗi cần tính độ dài.
  • size_t: Kiểu dữ liệu unsigned integer dùng để lưu trữ độ dài của chuỗi.

Cách sử dụng hàm strlen() để tính độ dài của chuỗi

  • Hàm strlen() trả về số lượng ký tự trong chuỗi str trước khi gặp ký tự null-terminator (\0).

Ví dụ:

#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "Chào mừng bạn đến với freetuts.net!";
    size_t len = strlen(str);
    printf("Chiều dài của chuỗi: %zu\n", len);
    return 0;
}

Output:

Chiều dài của chuỗi: 45

Điều chỉnh cách sử dụng hàm strlen() với các kiểu dữ liệu khác nhau

  • Hàm strlen() chỉ nhận vào con trỏ tới một chuỗi ký tự (char*).
  • Nếu bạn muốn sử dụng với các kiểu dữ liệu khác như wchar_t, bạn cần sử dụng các hàm tương ứng như wcslen().

Ví dụ:

#include <stdio.h>
#include <wchar.h>

int main() {
    wchar_t wstr[] = L"Chào mừng bạn đến với tự học lập trình Freetuts.net!";
    size_t len = wcslen(wstr);
    printf("Chiều dài của chuỗi: %zu\n", len);
    return 0;
}

Output:

Chiều dài của chuỗi: 52

Đây là những cách cơ bản và linh hoạt để sử dụng hàm strlen() trong các tình huống khác nhau trong lập trình C/C++.

Cách xử lý trường hợp lỗi khi sử dụng hàm strlen() trong C/C++

Xử lý trường hợp chuỗi không kết thúc bằng ký tự null-terminator

  • Hàm strlen() yêu cầu chuỗi kết thúc bằng ký tự null-terminator (\0). Nếu chuỗi không kết thúc bằng ký tự này, kết quả có thể không chính xác hoặc lỗi.
  • Để tránh lỗi này, luôn đảm bảo rằng chuỗi bạn truyền vào hàm strlen() phải kết thúc bằng ký tự null-terminator.

Ví dụ:

#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "Chào mừng bạn đến với tự học lập trình Freetuts.net!";
    // Thêm ký tự null-terminator vào cuối chuỗi
    str[12] = '\0';
    size_t len = strlen(str);
    printf("Chiều dài của chuỗi: %zu\n", len);
    return 0;
}

Output:

Chiều dài của chuỗi: 12

Xử lý trường hợp tham số không hợp lệ

  • Hàm strlen() chỉ chấp nhận con trỏ trỏ đến một chuỗi ký tự (char*). Nếu bạn truyền tham số không phải là một con trỏ hoặc con trỏ không hợp lệ, hành vi của chương trình là không xác định.
  • Đảm bảo rằng bạn chỉ truyền vào hàm strlen() một con trỏ hợp lệ trỏ đến một chuỗi ký tự.

Ví dụ:

#include <stdio.h>
#include <string.h>

int main() {
    char *ptr = NULL;
    size_t len = strlen(ptr); // Truyền con trỏ không hợp lệ
    printf("Chiều dài của chuỗi: %zu\n", len);
    return 0;
}

Trên đây là các cách xử lý trường hợp lỗi khi sử dụng hàm strlen() để đảm bảo tính đúng đắn và an toàn trong lập trình C/C++.

So sánh với các hàm tương tự trong C/C++

So sánh với hàm sizeof()

  • Hàm sizeof() trả về kích thước của một biến hoặc kiểu dữ liệu trong byte.
  • Không giống như strlen(), sizeof() không yêu cầu chuỗi kết thúc bằng ký tự null-terminator và có thể được sử dụng để tính toán kích thước của mảng ký tự kể cả khi không có ký tự null-terminator.
  • Tuy nhiên, sizeof() không thực hiện được tính độ dài của một chuỗi ký tự cụ thể.

Ví dụ:

#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "Hello freetuts.net";
    size_t len1 = sizeof(str); // Kích thước của mảng str
    size_t len2 = sizeof(str) / sizeof(str[0]); // Số phần tử của mảng str
    printf("Size of the array: %zu\n", len1);
    printf("Số phần tử trong mảng: %zu\n", len2);
    return 0;
}

Output:

Size of the array: 19
Số phần tử trong mảng: 19So sánh với hàm std::string::length()
  • Hàm std::string::length() trả về độ dài của một đối tượng chuỗi std::string.
  • Khác với strlen() là hàm std::string::length() không yêu cầu chuỗi kết thúc bằng ký tự null-terminator.
  • Hàm std::string::length() là một phương thức của lớp std::string trong thư viện chuẩn C++ (STL), do đó chỉ áp dụng được cho các đối tượng chuỗi kiểu std::string.

Ví dụ:

#include <iostream>
#include <string>

int main() {
    std::string str = "Hello freetuts.net";
    size_t len = str.length();
    std::cout << "Chiều dài của chuỗi: " << len << std::endl;
    return 0;
}

Output:

Chiều dài của chuỗi: 18

Trên đây là so sánh giữa hàm strlen() với hàm sizeof() và hàm std::string::length() để đánh giá tính linh hoạt và sự phù hợp trong các tình huống lập trình khác nhau.

Ví dụ minh họa hàm strlen() trong C/C++

Ví dụ về cách sử dụng hàm strlen() trong các tình huống khác nhau:

Tính độ dài của chuỗi c-style.

#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "Hello, Tự học lập trình freetuts.net!";
    size_t len = strlen(str);
    printf("Chiều dài của chuỗi: %zu\n", len);
    return 0;
}

Output:

Chiều dài của chuỗi: 44

Sử dụng trong vòng lặp để duyệt qua từng ký tự của chuỗi và đếm số ký tự.

#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "Hello, Tự học lập trình Freetuts.net!";
    size_t len = 0;
    for (size_t i = 0; i < strlen(str); ++i) {
        if (str[i] != ' ') {
            ++len;
        }
    }
    printf("Số ký tự trong chuỗi (không bao gồm dấu cách): %zu\n", len);
    return 0;
}

Output:

Số ký tự trong chuỗi (không bao gồm dấu cách): 39

Bài tập thực hành

Viết các đoạn mã sử dụng hàm strlen() để tính độ dài của chuỗi.

  • Viết chương trình yêu cầu người dùng nhập vào một chuỗi và sau đó in ra độ dài của chuỗi đó bằng hàm strlen().
#include <stdio.h>
#include <string.h>

int main() {
    char str[100];
    printf("Nhập một chuỗi: ");
    scanf("%s", str);
    size_t len = strlen(str);
    printf("Chiều dài của chuỗi: %zu\n", len);
    return 0;
}

Output:

Nhập một chuỗi: 
freetut.net
Chiều dài của chuỗi: 11
  • Viết một chương trình yêu cầu người dùng nhập vào một danh sách các từ, mỗi từ cách nhau bằng dấu cách. Sau đó, in ra độ dài của từng từ trong danh sách.
#include <stdio.h>
#include <string.h>

int main() {
    char str[100];
    printf("Nhập danh sách các từ cách nhau bởi dấu cách: ");
    fgets(str, sizeof(str), stdin);
    char* token = strtok(str, " ");
    while (token != NULL) {
        printf("Độ dài của\"%s\": %zu\n", token, strlen(token));
        token = strtok(NULL, " ");
    }
    return 0;
}

Output:

Screenshot 202024 04 08 20104230 png

Kết bài

Trên đây là những thông tin về hàm strlen() trong ngôn ngữ lập trình C/C++, bao gồm cú pháp, cách sử dụng, xử lý trường hợp lỗi, so sánh với các hàm tương tự, và các ví dụ minh họa cũng như bài tập thực hành. Hi vọng rằng sau khi tham khảo, bạn đã hiểu rõ về cách sử dụng hàm này để tính độ dài của chuỗi. Hãy thực hành và tìm hiểu thêm để nắm vững kiến thức.

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