10/1/15

Các hàm xử lý chuỗi trong C

C cung cấp rất nhiều hàm xử lý chuỗi và tất cả đều nằm trong thư viện string.h nên trước khi dùng cần phải khai báo bằng từ khoá #include.
Các hàm thường được dùng phổ biến:

strlen
Cú pháp: unsigned int strlen(const char *str);
Chức năng: Trả về độ dài của chuỗi. Độ dài chuỗi được xác định bởi ký tự null nên không bị nhầm lẫn với chiều dài mảng ký tự.
Ví dụ: char str[100]="abcd";
Hàm strlen(str) sẽ trả về 4, trong khi toán tử sizeof(str) trả về 100.

Code C:
//Ví dụ về hàm strlen
#include<stdio.h>
#include<string.h>

void main()
{
   char str[100];
   printf("Nhập chuỗi: ");
   gets(str);
   printf("Độ dài chuỗi: %d", strlen(str));
}

strcpy
Cú pháp: char* strcpy(char *destination, const char *source);
Chức năng: Sao chép chuỗi source vào chuỗi destination và trả về chuỗi destination. Lưu ý chuỗi destination phải có kích thước bằng hoặc lớn hơn chuỗi source và chưa có giá trị nào.



Code C:
//Ví dụ về hàm strcpy
#include<stdio.h>
#include<string.h>

void main()
{
   char a[100], b[100], c[100] = "abcdefg";
   strcpy(a,c);
   strcpy(b,"12345");
   printf("a: %s\nb: %s\nc: %s\n", a, b, c);
}
Kết quả:
a: abcdefg
b: 12345
c: abcdefg


strncpy
Cú pháp: char* strncpy(char *destination, const char *source, unsigned int num);
Chức năng: Sao chép từ chuỗi source vào chuỗi destination số lượng num ký tự đầu tiên trong chuỗi source và trả về chuỗi destination. Trong trường hợp số ký tự cần sao chép lớn hơn độ dài của chuỗi source thì phần còn thiếu sẽ được lấp bằng ký tự null.

Code C:
//Ví dụ về hàm strncpy
#include<stdio.h>
#include<string.h>

void main()
{
   char a[100], b[100], c[100] = "abcdefg";
   strncpy(a,c,3);
   strncpy(b,"12345",7);
   printf("a: %s\nb: %s\nc: %s\n", a, b, c);
}
Kết quả:
a: abc
b: 12345
c: abcdefg



strcat
Cú pháp: char* strcat(char *destination, const char *source);
Chức năng: Nối chuỗi source vào chuỗi destination  và trả về chuỗi destination. Ký tự null của chuỗi destination sẽ được ghi đè bằng ký tự đầu tiên của chuỗi source.

Code C:
//Ví dụ về hàm strcat
#include<stdio.h>
#include<string.h>

void main()
{
   char a[100];
   strcat(a,"We ");
   strcat(a,"are ");
   strcat(a,"programmer!");
   puts(a);
}
Kết quả: We are programmer!

strncat
Cú pháp: char* strncat(char *destination, const char *source, unsigned int num);
Chức năng: Nối số lượng num ký tự từ chuỗi source vào chuỗi destination  và trả về chuỗi destination. Trong trường hợp số ký tự cần nối lớn hơn độ dài của chuỗi source thì chỉ có nội dung trong chuỗi được nối qua.

Code C:
//Ví dụ về hàm strncat
#include<stdio.h>
#include<string.h>

void main()
{
   char a[100];
   strcat(a, "We Are The World!", 6);
   puts(a);
}
Kết quả: We Are

strcmp
Cú pháp: int strcmp(const char *str1, const char *str2);
Chức năng: So sánh 2 chuỗi, trả về -1 nếu str1 < str2, trả về 0 nếu hai chuỗi bằng nhau, trả về 1 nếu str1 > str2.
Nguyên tắc so sánh: So sánh theo từng cặp kí tự từ đầu đến cuối theo mã ASCII, tại vị trí đầu tiên khác nhau, chuỗi chứa ký tự nhỏ hơn sẽ nhỏ hơn, nếu không khác nhau thì chuỗi ngắn hơn sẽ nhỏ hơn

Code C:
//Ví dụ về hàm strcmp
#include<stdio.h>
#include<string.h>

void main()
{
   char a[8]="abcDefg", b[5]="abcd";
   int c = strcmp(a,b);
   if (c == -1)
      printf("a < b");
   else if (c == 0)
      printf("a = b");
   else
      printf("a > b");
}
Kết quả: a < b
D có mã ASCII bé hơn d nên chuỗi chứa nó bé hơn.

strlwr
Cú pháp: char* strlwr(char *str);
Chức năng: In thường tất cả những ký tự in hoa trong chuỗi.

Code C:
//Ví dụ về hàm strlwr
#include<stdio.h>
#include<string.h>

void main()
{
   char a[8]="aBcDefg";
   printf("%s", strlwr(a));
}
Kết quả: abcdefg
strupr
Cú pháp: char* strupr(char *str);
Chức năng: In hoa tất cả những ký tự in thường trong chuỗi.

Code C:
//Ví dụ về hàm strupr
#include<stdio.h>
#include<string.h>

void main()
{
   char a[8]="aBcDefg";
   printf("%s", strupr(a));
}
Kết quả: ABCDEFG



1 nhận xét:

  1. Hay quá ad mong được đọc thêm nhiều bài hay như vầy nữa ak

    Trả lờiXóa