0965303260
TP. Hồ Chí Minh

[C]. Đếm Từ Trong Xâu

Đếm từ trong xâu là một bài toán thường gặp trong lập trình C, bài viết này mình sẽ hướng dẫn các bạn sử dụng hàm strtok() và tự cài đặt lời giải mà không sử dụng hàm.

NỘI DUNG : 

  • Đếm từ trong xâu bằng hàm strtok()
  • Đếm từ trong xâu không dùng hàm

đếm từ

1. Đếm từ trong xâu bằng hàm strtok()

Đếm từ trong xâu sử dụng hàm strtok() khá ngắn gọn và tối ưu, nếu được sử dụng thì bạn nên dùng luôn hàm này.

Nếu bạn chưa biết hàm strtok() thì có thể tham khảo tại đây

Code : 

#include "stdio.h"
#include "ctype.h"
#include "string.h"

int main(){
    char s[1000] = "28tech  blog   C   programming !";
    int dem = 0;
    char *token = strtok(s, " ");
    while(token != NULL){
        ++dem;
        token = strtok(NULL, " ");
    }
    printf("So luong tu trong xau : %d\n", dem);
    return 0;
}

Output : 

So luong tu trong xau : 5


2. Đếm từ trong xâu không dùng hàm

Nếu không dùng hàm thì để đếm các từ trong xâu bạn sẽ sử dụng thuật toán như sau : Duyệt qua từng ký tự của xâu ký tự, nếu gặp ký tự khác dấu cách thì đây sẽ là 1 từ. Ta sẽ đếm từ này và bỏ qua các ký tự liên tiếp tính từ ký tự này tới hết các kí tự trong từ đó. 

Lưu ý không được đếm dấu cách sau đó cộng thêm 1 để suy ra số lượng từ trong xâu, vì trong xâu có thể có nhiều dấu cách dư thừa.

Code : 

#include "stdio.h"
#include "ctype.h"
#include "string.h"

int count(char s[]){
    int dem = 0, n = strlen(s);
    for(int i = 0; i < n; i++){
        //Đây là 1 từ mới
        if(s[i] != ' '){
            ++dem; 
            //Bỏ qua từ đó
            while(i < n && s[i] != ' '){
                ++i;
            }
        }
    }
    return dem;
}

int main(){
    char s[1000] = "28tech  blog   C   programming !  ";
    printf("So luong tu trong xau : %d\n", count(s));
    return 0;
}

Output : 

So luong tu trong xau : 5