String trong C

String là gì?

Trong C, string là một chuỗi các ký tự được kết thúc bằng ký tự rỗng \0. Ví dụ:

char c[] = "c string";

Khi trình biên dịch bắt gặp một chuỗi các ký tự được đặt trong dấu ngoặc kép, nó sẽ thêm một ký tự rỗng \0 ở cuối theo mặc định.
string


Cách khai báo string

char s[5];

Ở đây chúng ta đã khai báo một string gồm 5 ký tự.


Cách khởi tạo string

Chúng ta có thể khởi tạo string theo nhiều cách

char c[] = "abcd";

char c[50] = "abcd";

char c[] = {'a', 'b', 'c', 'd', '\0'};

char c[5] = {'a', 'b', 'c', 'd', '\0'};

Lấy một ví dụ khác

char c[5] = "abcde";

Ở đây, chúng ta đang cố gắng gán 6 ký tự (ký tự cuối cùng là \0) cho một mảng char có 5 ký tự. Điều này là không tốt và bạn không bao giờ nên vậy.


Gán giá trị vào string

arraystring là những công dân hạng 2 trong C, chúng không được hỗ trợ để được gán giá trị một khi đã khởi tạo.
Ví dụ

char c[100];
c = "C programming";  // Lỗi

Đọc string từ user

Chúng ta có thể dùng hàm scanf() để nhập dữ liệu.

Hàm scanf() đọc chuỗi ký tự cho đến khi gặp khoảng trắng (dấu cách, dòng mới, tab, v.v.).

#include <stdio.h>
int main()
{
    char name[20];
    printf("Enter name: ");
    scanf("%s", name);
    printf("Your name is %s.", name);
    return 0;
}

Kết quả

Enter name: Saitama King
Your name is Saitama.

Mặc dù chúng ta đã nhập tên Saitama King, nhưng chỉ có Saitama được lưu trữ vì chữ King ở phía sau khoảng trắng.


Cách đọc một dòng của văn bản

Bạn có thể sử dụng hàm fgets() để đọc một dòng string. Và sử dụng put() để hiển thị string.


Ví dụ 2: fgets() & puts()

#include <stdio.h>
int main()
{
    char name[30];
    printf("Enter name: ");
    fgets(name, sizeof(name), stdin);  // read string
    printf("Name: ");
    puts(name);    // display string
    return 0;
}

Kết quả

Enter name: Saitama King
Name: Saitama King

Chúng ta đã dùng hàm fgets() để đọc dữ liệu nhập từ user. sizeof(name) cho kết quả là 30, vậy nên hàm fgets() sẽ đọc tối đa 30 ký tự.

Để hiển thị string chúng ta dùng hàm puts().


Sử dụng string trong hàm

Ví dụ

#include <stdio.h>
void displayString(char str[]);

int main()
{
    char str[50];
    printf("Enter string: ");
    fgets(str, sizeof(str), stdin);             
    displayString(str);     // dùng str như argument trong hàm
    return 0;
}
void displayString(char str[])
{
    printf("String Output: ");
    puts(str);
}

String và Pointer

Tương tự như array, tên của string sẽ được coi như một pointer trở đến thành phần đầu tiên của chuỗi. Vậy nên bạn có thể dùng tên của string để truy cập vào các phần tử của nó.

Ví dụ:

#include <stdio.h>

int main(void) {
  char name[] = "Harry Potter";

  printf("%c", *name);     // Output: H
  printf("%c", *(name+1));   // Output: a
  printf("%c", *(name+7));   // Output: o

  char *namePtr;

  namePtr = name;
  printf("%c", *namePtr);     // Output: H
  printf("%c", *(namePtr+1));   // Output: a
  printf("%c", *(namePtr+7));   // Output: o
}
Series Navigation<< Cấp phát động (Dynamic Memory Allocation) trong CCác hàm string >>

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *