Chuỗi lập trình C

Trong hướng dẫn này, bạn sẽ tìm hiểu về chuỗi trong lập trình C. Bạn sẽ học cách khai báo chúng, khởi tạo chúng và sử dụng chúng cho các hoạt động I / O khác nhau với sự trợ giúp của các ví dụ.

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

char c[] = "c string";

Khi trình biên dịch gặp một chuỗi các ký tự được đặt trong dấu ngoặc kép, \0theo mặc định , nó sẽ thêm một ký tự null vào cuối.Sơ đồ bộ nhớ

Làm thế nào để khai báo một chuỗi?

Đây là cách bạn có thể khai báo chuỗi:

char s[5];

Khai báo chuỗi trong C

Ở đây, chúng tôi đã khai báo một chuỗi gồm 5 ký tự.

Làm thế nào để khởi tạo chuỗi?

Bạn có thể khởi tạo chuỗi theo một số cách.

char c[] = "abcd";

char c[50] = "abcd";

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

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

Khởi tạo chuỗi trong C

Hãy lấy một ví dụ khác:

char c[5] = "abcde";

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

Gán giá trị cho chuỗi

Mảng và chuỗi là công dân hạng hai trong C; chúng không hỗ trợ toán tử gán khi nó được khai báo. Ví dụ,

char c[100];
c = "C programming";  // Error! array type is not assignable.

Lưu ý: Sử dụng hàm strcpy () để sao chép chuỗi.

Đọc chuỗi từ người dùng

Bạn có thể sử dụng scanf()hàm để đọc một chuỗi.

Các scanf()chức năng đọc chuỗi các ký tự cho đến khi nó gặp khoảng trắng (không gian, xuống dòng, tab, vv).

Ví dụ 1: scanf () để đọc một chuỗi

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

Đầu ra

Enter name: Dennis Ritchie
Your name is Dennis.

Mặc dù Dennis Ritchie đã được nhập vào chương trình trên, chỉ có “Dennis” được lưu trữ trong chuỗi tên . Đó là bởi vì có một khoảng trống sau Dennis .

Làm thế nào để đọc một dòng văn bản?

Bạn có thể sử dụng fgets()hàm để đọc một dòng của chuỗi. Và, bạn có thể sử dụng puts()để hiển thị chuỗi.

Ví dụ 2: fgets () và put ()

#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;
}

Đầu ra

Enter name: Tom Hanks
Name: Tom Hanks

Ở đây, chúng tôi đã sử dụng fgets()hàm để đọc một chuỗi từ người dùng.

fgets(name, sizeof(name), stdlin); // read string

Các sizeof(name)kết quả cho 30. Do đó, chúng ta có thể mất tối đa là 30 ký tự như là đầu vào đó là kích thước của  tên chuỗi.

Để in chuỗi, chúng tôi đã sử dụng puts(name);.

Lưu ý: Các gets()chức năng cũng có thể là để có đầu vào từ người dùng. Tuy nhiên, nó bị loại bỏ khỏi tiêu chuẩn C.

Đó là vì gets()cho phép bạn nhập bất kỳ độ dài ký tự nào. Do đó, có thể xảy ra tình trạng tràn bộ đệm.

Chuyển các chuỗi đến các hàm

Các chuỗi có thể được truyền cho một hàm theo cách tương tự như các mảng. Tìm hiểu thêm về cách chuyển mảng cho một hàm .

Ví dụ 3: Truyền chuỗi cho một hàm

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

int main()
{
    char str[50];
    printf("Enter string: ");
    fgets(str, sizeof(str), stdin);             
    displayString(str);     // Passing string to a function.    
    return 0;
}
void displayString(char str[])
{
    printf("String Output: ");
    puts(str);
}

Chuỗi và con trỏ

Tương tự như mảng, tên chuỗi được “phân rã” thành con trỏ. Do đó, bạn có thể sử dụng con trỏ để thao tác các phần tử của chuỗi. Chúng tôi khuyên bạn nên kiểm tra Mảng và con trỏ C trước khi kiểm tra ví dụ này.

Ví dụ 4: Chuỗi và con trỏ

#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
}

Các hàm chuỗi được sử dụng phổ biến

  • strlen() – calculates the length of a string
  • strcpy() – copies a string to another
  • strcmp() – compares two strings
  • strcat() – concatenates two strings








Gõ tìm kiếm nhanh...