Hàm strcspn() trong C

Thứ năm - 19/06/2025 01:11

Strcspn in C là gì? Nếu muốn tìm hiểu cách dùng strcspn trong C, mời bạn đọc bài viết dưới đây.

Hàm size_t strcspn(const char *str1, const char *str2) tính độ dài của đoạn ký tự của chuỗi str1 mà không chứa các ký tự trong str2.

Khai báo hàm strcspn() trong C

Dưới đây là phần khai báo cho strcspn() trong C:

size_t strcspn(const char *str1, const char *str2)

Tham số

str1 -- Đây là chuỗi ký tự để được quét.

str2 -- Chuỗi chứa một danh sách các ký tự để so khớp trong str1.

Trả về giá trị

Hàm này trả về số ký tự trong một đoạn chuỗi của chuỗi ban đầu str1 mà không có trong chuỗi str2.

Ví dụ

Chương trình C sau minh họa cách sử dụng của strcspn() trong C:

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

int main ()
{
   int len;
   const char str1[] = "ABCDEF4960910";
   const char str2[] = "013";

   len = strcspn(str1, str2);

   printf("Ky tu ket noi dau tien tai vi tri %d\n", len + 1);
   return(0);
}

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Biên dịch và chạy chương trình C trên sẽ cho kết quả

Ví dụ dùng Strcspn() cho một game đố từ đơn giản

Luật chơi: Trò chơi này gồm 2 người, một người chơi ban đầu tạo ra một chuỗi và được yêu cầu tạo ra một chuỗi có số ký tự không trùng nhau. Sau 1 vòng, người chơi tạo ra chuỗi có nhiều ký tự không trùng nhau nhất sẽ thắng.

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

int main()
{

    int score1 = 0, score2 = 0, k = 0, sizen = 0, size = 0;

    // khởi tạo chuỗi Round1
    char player1[] = "geeks";
    char play2[] = "";

    while (1) {
        // tạo ký tự ngẫu nhiên
        char randoml = 'a' + (random() % 26);
        play2[k++] = randoml;

        size = strcspn(play2, player1);

        if (size == sizen) {
            // nếu ký tự hiện tại là break
            score2 = size;
            break;
        }
        else {
            sizen = size;
        }
    }

    // khởi tạo chuỗi Round2 
    const char player2[] = "geeks";
    char play1[] = "";
    k = 0, sizen = 0;

    while (1) {
        // tạo ký tự ngẫu nhiên
        char randoml = 'a' + (random() % 26);
        play1[k++] = randoml;

        size = strcspn(play1, player2);

        if (size == sizen) {

            // nếu ký tự hiện tại, break
            score1 = size;
            break;
        }
        else {
            sizen = size;
        }
    }

    if (score1 > score2)
        printf("Player 1 won!! \nScore: %d", score1);
    else if (score2 > score1)
        printf("Player 2 won!! \nScore: %d", score2);
    else
        printf("Match Drawn!! \nScore: %d", score1);
}

Kết quả:

Match Drawn!! 
Score: 2
 

Nguồn tin: Quantrimang.com:

Tổng số điểm của bài viết là: 0 trong 0 đánh giá

  Ý kiến bạn đọc

THỐNG KÊ TRUY CẬP
  • Đang truy cập53
  • Máy chủ tìm kiếm1
  • Khách viếng thăm52
  • Hôm nay14,103
  • Tháng hiện tại23,812
  • Tổng lượt truy cập11,810,199
QUẢNG CÁO
Phan Thanh Phú
Quảng cáo 2
Liên kết site
Đăng nhập Thành viên
Hãy đăng nhập thành viên để trải nghiệm đầy đủ các tiện ích trên site
Thăm dò ý kiến

Bạn thấy Website cần cải tiến những gì?

Lịch Âm dương
Máy tính
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây