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