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

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

Trong lập trình C/C++, việc xử lý chuỗi là một phần quan trọng và phổ biến trong nhiều ứng dụng. Để tìm kiếm một chuỗi con trong một chuỗi lớn, chúng ta có thể sử dụng hàm strstr(). Hàm này giúp mình tìm ra vị trí xuất hiện đầu tiên của chuỗi con trong chuỗi cha.

Trong bài này, mình sẽ tìm hiểu về cú pháp, cách sử dụng và các trường hợp xử lý lỗi khi sử dụng hàm strstr(), cùng với ví dụ minh họa và bài tập thực hành để nắm vững cách sử dụng hàm này. Hãy cùng đi vào chi tiết của chủ đề này.

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

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

Cú pháp của hàm strstr() trong C/C++ như sau:

char *strstr(const char *str1, const char *str2);
  • Trong đó, str1 là chuỗi cần tìm kiếm, và str2 là chuỗi con mà bạn muốn tìm trong str1.

Cách sử dụng hàm strstr()

Tìm kiếm một chuỗi con trong chuỗi cha .Hàm strstr() trả về con trỏ đến vị trí đầu tiên của chuỗi con nếu tìm thấy, và trả về NULL nếu không tìm thấy.

Ví dụ:

const char *str = "Tự học lập trình tại freetuts.net";
const char *subStr = "freetuts.net";
char *result = strstr(str, subStr);
if (result != NULL) {
    printf("Chuoi con '%s' duoc tim thay tai vi tri: %ld\n", subStr, result - str);
} else {
    printf("Chuoi con '%s' khong tim thay trong chuoi '%s'\n", subStr, str);
}

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

Sử dụng với chuỗi ký tự:

char str[] = "Tự học lập trình tại freetuts.net";
char subStr[] = "freetuts.net";
char *result = strstr(str, subStr);

Sử dụng với mảng ký tự:

char str[] = {'T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 't', 'e', 's', 't', ' ', 's', 't', 'r', 'i', 'n', 'g', '\0'};
char subStr[] = {'t', 'e', 's', 't', '\0'};
char *result = strstr(str, subStr);

Sử dụng với std::string:

#include <iostream>
#include <string>
using namespace std;

string str = "freetuts.net";
string subStr = "net";
size_t pos = str.find(subStr);
if (pos != string::npos) {
    cout << "Chuoi con 'net' duoc tim thay tai vi tri: " << pos << endl;
} else {
    cout << "Chuoi con 'net' khong tim thay trong chuoi 'freetuts.net'" << endl;
}

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

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

  • Khi sử dụng hàm strstr(), bạn cần đảm bảo rằng chuỗi đầu vào phải kết thúc bằng ký tự null-terminator để tránh lỗi xảy ra.

Ví dụ:

char str[] = {'T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 't', 'e', 's', 't', ' ', 's', 't', 'r', 'i', 'n', 'g'};
char subStr[] = "test";
char *result = strstr(str, subStr);
if (result != NULL) {
    printf("Chuoi con '%s' duoc tim thay tai vi tri: %ld\n", subStr, result - str);
} else {
    printf("Chuoi con '%s' khong tim thay trong chuoi\n", subStr);
}

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

  • Nếu tham số truyền vào hàm strstr() không hợp lệ (ví dụ: NULL), hàm này có thể không hoạt động đúng và gây ra lỗi.
  • Ví dụ:
char *str = NULL;
char *subStr = "freetuts.net";
char *result = strstr(str, subStr);
if (result != NULL) {
    printf("Chuoi con '%s' duoc tim thay tai vi tri: %ld\n", subStr, result - str);
} else {
    printf("Chuoi con '%s' khong tim thay trong chuoi\n", subStr);
}

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

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

  • Hàm strstr() được sử dụng để tìm kiếm một chuỗi con trong một chuỗi lớn, trong khi hàm strchr() được sử dụng để tìm kiếm một ký tự cụ thể trong chuỗi.
  • strstr() trả về con trỏ đến vị trí đầu tiên của chuỗi con được tìm thấy, trong khi strchr() trả về con trỏ đến vị trí đầu tiên của ký tự được tìm thấy.

Ví dụ:

char str[] = "freetuts.net";
char *ch = strchr(str, 'e');
if (ch != NULL) {
    printf("Ky tu 'e' duoc tim thay tai vi tri: %ld\n", ch - str);
} else {
    printf("Ky tu 'e' khong tim thay trong chuoi\n");
}

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

  • Hàm strstr() được sử dụng để tìm kiếm một chuỗi con trong một chuỗi lớn, trong khi hàm strcmp() được sử dụng để so sánh hai chuỗi.
  • strstr() trả về con trỏ đến vị trí đầu tiên của chuỗi con được tìm thấy, trong khi strcmp() trả về một giá trị nguyên dương nếu chuỗi thứ nhất lớn hơn chuỗi thứ hai, một giá trị nguyên âm nếu chuỗi thứ nhất nhỏ hơn chuỗi thứ hai, và 0 nếu hai chuỗi bằng nhau.

Ví dụ:

char str1[] = "Freetuts";
char str2[] = ".net";
int result = strcmp(str1, str2);
if (result < 0) {
    printf("Chuoi str1 nho hon str2\n");
} else if (result > 0) {
    printf("Chuoi str1 lon hon str2\n");
} else {
    printf("Hai chuoi bang nhau\n");
}

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

Ví dụ về cách sử dụng hàm strstr() để tìm kiếm một chuỗi con trong chuỗi cha:

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

int main() {
    char str[] = "Chào mừng bạn đến với lập trình C/C++ tại freetut.net.";
    char sub[] = "net";
    char *result = strstr(str, sub);
    if (result != NULL) {
        printf("Chuoi con '%s' duoc tim thay tai vi tri: %ld\n", sub, result - str);
    } else {
        printf("Khong tim thay chuoi con trong chuoi cha\n");
    }
    return 0;
}

Output:

Chuoi con 'net' duoc tim thay tai vi tri: 65

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

Viết các đoạn mã sử dụng hàm strstr() để thực hiện các tác vụ tìm kiếm khác nhau trong chuỗi:

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

int main() {
    char str[] = " Tự học lập trình miễn phí tại freetuts.net";
    char *search1 = "miễn phí ";
    char *search2 = "freetuts.net";
    char *search3 = "nonexistent";

    // Tìm kiếm từ "simple" trong chuỗi str
    char *result1 = strstr(str, search1);
    if (result1 != NULL) {
        printf("Chuoi con '%s' duoc tim thay tai vi tri: %ld\n", search1, result1 - str);
    } else {
        printf("Khong tim thay chuoi con '%s' trong chuoi cha\n", search1);
    }

    // Tìm kiếm từ "example" trong chuỗi str
    char *result2 = strstr(str, search2);
    if (result2 != NULL) {
        printf("Chuoi con '%s' duoc tim thay tai vi tri: %ld\n", search2, result2 - str);
    } else {
        printf("Khong tim thay chuoi con '%s' trong chuoi cha\n", search2);
    }

    // Tìm kiếm từ "nonexistent" trong chuỗi str
    char *result3 = strstr(str, search3);
    if (result3 != NULL) {
        printf("Chuoi con '%s' duoc tim thay tai vi tri: %ld\n", search3, result3 - str);
    } else {
        printf("Khong tim thay chuoi con '%s' trong chuoi cha\n", search3);
    }

    return 0;
}

Output:

Screenshot 202024 04 08 20191538 png

Kết bài

Trong bài viết này, mình đã tìm hiểu về hàm strstr() trong ngôn ngữ lập trình C/C++. Ta đã tìm hiểu cú pháp và cách sử dụng hàm này để tìm kiếm một chuỗi con trong một chuỗi cha. Bên cạnh đó, cũng đã đi sâu vào xử lý trường hợp lỗi và so sánh với các hàm tương tự như strchr()strcmp().

Cuối cùng, mình đã thực hành qua các ví dụ minh họa và bài tập, giúp củng cố kiến thức về cách sử dụng hàm strstr() để tìm kiếm các chuỗi con trong chuỗi. Hy vọng rằng thông qua bài viết này, bạn đã hiểu rõ hơn về cách sử dụng và áp dụng hàm strstr() trong quá trình lập trình C/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