String

String

String trong C là mảng các ký tự kết thúc bằng ký tự NULL (mã 0 trong bảng mã ASCII).
Khởi tạo string trong C có 2 cách:

1
2
3
4
5
6
char s1[] = {'C', ' ', 'p', 'r', 'o', 'g', 'r', 'a', 'm', '\0'};
char s2[] = "C program"; // tương tự cách trước nhưng ngắn gọn hơn
const char* s3 = "C program"; // tương tự cách trước
printf("%s\n", s1);
printf("%s\n", s2);
printf("%s\n", s3);

Ký tự đặt biệt

Một số ký tự đặt biệt trong C

Ký tự Mã ASCII (hexa) Mô tả
\0 00 Ký tự NULL cho biết kết thúc string
\' 27 dấu nháy đơn
\" 22 dấu nháy kép
\? 3F dấu chấm hỏi
\\ 5C dấu sổ ngược
\n 0A Ký tự xuống dòng
\b 08 Backspace, tương tự gõ một phím backspace trên bàn phím
\f 0C Formfeed Page Break, ký tự ít khi sử dụng
\r 0D Ký tự Carriage Return, sử dụng với \n làm ký tự xuống dòng trên các máy Windows
\t 09 Tab
\v 0B Vertical Tab, rất ít khi sử dụng

Một số hàm trong thư viện <string.h>

strlen - lấy độ dài của string

1
2
int s_len = strlen("Hello C");
printf("%d\n", s_len); // -> 7

strcmp - so sánh hai string với nhau

Hàm sẽ so sánh từng ký tự của hai string. Hàm này trả về 0 nếu hai string giống nhau, nếu string1 > string2 thì trả về số > 0, ngược lại thì trả về < 0. Số trả về là khoảng cách giữa hai ký tự khác nhau.

1
2
3
4
5
6
7
char name[] = "Program";
int compare1 = strcmp(name, "Program");
int compare2 = strcmp(name, "Prggram");
int compare3 = strcmp(name, "Prrram");
printf("%d\n", compare1); // -> 0
printf("%d\n", compare2); // -> 8 = 'o' - 'g'
printf("%d\n", compare3); // -> -3 = 'o' - 'r'

strstr - Tìm kiếm một string có trong một string khác hay không

Kết quả hàm trả về con trỏ tới vị trí tìm kiếm nếu tìm thấy, còn không thì trỏ về NULL.

1
2
3
4
5
6
7
const char haystack[20] = "C Programing";
const char needle[10] = "gram";
char *ret;

ret = strstr(haystack, needle);

printf("The substring is: %s\n", ret); // -> graming

strtok - tách một string ra thành các string con

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
char str[80] = "This is ninjait website";
const char s[2] = " ";
char *token;

token = strtok(str, s);

while(token != NULL) {
  printf(" %s\n", token);
  token = strtok(NULL, s);
}

strcpy - Copy string

Copy một string sang một string mới

1
2
char str[80];
strcpy (str,"hello there");

strcat - Nối hai string thành một string

Hàm này sẽ nối string2 vào string1

1
2
3
char str[80];
strcpy(str, "hello there. ");
strcat(str, "How are you");

strchr - Tìm một ký tự trong một string

Tìm một ký tự trong một string, trả về sẽ là con trỏ trỏ đến vị trí được tìm thấy. Nếu không tìm thấy sẽ trả về NULL.

1
2
3
4
5
char* str = "I'm a ninja";
char* search = strchr(str, 'a');
if (search != NULL) {
  printf("Position of 'a' is %ld\n", search - str); // -> 4
}