Chuỗi trong C là gì ? Cách khởi tạo, khai báo, gán và in chuỗi trong C | Laptrinhcanban.com

HOME › >>

Chuỗi trong C là gì ? Cách khởi tạo, khai báo, gán và in chuỗi trong C

Hướng dẫn cách Khởi tạo và khai báo chuỗi trong C. Bạn sẽ học được khái niệm Chuỗi trong C là gì, cách Khởi tạo và khai báo chuỗi trong C, cách gán chuỗi trong C cũng như là cách in chuỗi trong C sau bài học này.

Chuỗi trong c là gì

Trong ngôn ngữ C, có một kiểu dữ liệu gọi là kiểu char (kiểu ký tự) ( char là viết tắt của character). Đây là kiểu dữ liệu có kích thước bộ nhớ là 1 byte. Vì 1 byte là đơn vị nhỏ nhất nên có thể nói char là loại có kích thước bộ nhớ nhỏ nhất.

Khi chúng ta nối các ký tự (char) trong C lại với nhau thì sẽ được một chuỗi ký tự hay còn gọi là chuỗi string trong c. Và bằng cách sử dụng chuỗi ký tự này, chúng ta có thể tạo ra được chuỗi trong C.

Trong C vốn không tồn tại kiểu chuỗi, chúng ta chỉ có thể biểu diễn chuỗi bằng một mảng chứa các ký tự thuộc kiểu char, thông qua việc khởi tạo hoặc là khởi tạo chuỗi. Ví dụ như chúng ta khởi tạo chuỗi s bằng cách viết char s[4], có ý nghĩa là một mảng chứa 4 ký tự char tạo nên chuỗi s chẳng hạn.

Lại nữa, chuỗi trong C không đơn giản chỉ là một mảng chứa các ký tự, mà nó phải tuân theo một quy tắc là phải kết thúc một chuỗi bởi một ký tự đặc biệt là \0. Đây còn được gọi là ký tự Null, có tác dụng kết thúc một chuỗi ký tự trong chương trình C.

Ví dụ, chúng ta có chuỗi char s[4] (một chuỗi gồm 4 ký tự char) có giá trị là chuỗi ký tự "abc" chẳng hạn, chuỗi này thực chất được biểu diễn thông qua tập hơp các ký tự (char) như sau:

"abc" = 'a' + 'b' +'c' + '\0'

Và khi biểu diễn trong chuỗi, thì nó sẽ như dưới đây:

Chuỗi trong c là gì

Nói tóm lại thì trong C không tồn tại kiểu chuỗi, và chuỗi trong C thực chất là một mảng chuỗi chứa phần tử là các ký tự thuộc kiểu char trong đó mà thôi.

Khởi tạo chuỗi trong c

Để khởi tạo chuỗi trong C, chúng ta sử dụng từ khoá char và chỉ định số ký tự có trong chuỗi đó cùng giá trị ban đầu, với cú pháp sau đây:

char s[length] = "string";

Trong đó

  • s là tên chuỗi
  • length là độ dài hay còn gọi là số ký tự có trong chuỗi s, và giá trị này có thể lược bỏ khi khởi tạo chuỗi. Nếu lược bỏ thì giá trị length sẽ tự động lấy bằng độ dài của chuỗi ký tự ban đầu được gán vào chuỗi.
  • string ở đây là chuỗi ký tự ban đầu được gán vào chuỗi s.

Lưu ý là chuỗi trong C cần được kết thúc bởi ký tự \0, do đó giá trị của num luôn phải lớn hơn số ký tự trong chuỗi ký tự string là 1 đơn vị.

Giả sử chúng ta sẽ khởi tạo chuỗi s với giá trị chuỗi ký tự love cho nó. Do chuỗi love có 4 ký tự, nên chúng ta cần chỉ định chuỗi s với độ dài 5 ký tự như sau:

char s[5] = "love";

Hoặc là chúng ta có thể lược bỏ đi đối số length luôn như sau:

char s[] = "love";

Lại nữa, do chuỗi ký tự có thể được biểu diến thông qua tập hợp các ký tự, nên chúng ta có 2 cách viết để gán một chuỗi ký tự cho một chuỗi trong C. Ví dụ chúng ta gán chuỗi ký tự "love" vào chuỗi s mới khởi tạo ở trên với 2 cách sau:

Một là sử dụng chuỗi ký tự. Ví dụ:

char s[] = "love";

Hai là sử dụng tập hợp các ký tự kết hợp với ký tự đặc biệt là \0 như sau:

char s[] = { 'l', 'o', 'v', 'e', '\0' };

Cách viết thứ nhất thì đơn giản là chúng ta gán trực tiếp chuỗi ký tự vào chuỗi mới tạo ra. Còn cách thứ 2 thì chúng ta sẽ đặt tập hợp các ký tự tạo nên chuỗi cũng như ký tự kết thúc chuỗi \0 vào giữa cặp dấu ngoặc nhọn {} như trên.

Tuy nhiên thì thông thường chúng ta hay dùng cách đầu tiên để tiến hành khởi tạo và gán giá trị cho chuỗi trong C như sau:

#include <stdio.h>
int main(void){
char s[5] = "love";
printf("%s",s);
}
//love

Khai báo chuỗi trong C

Để khai báo chuỗi trong C, chúng ta sử dụng cú pháp sau đây:

char s[length];

Sau khi khai báo chuỗi, một chuỗi rỗng trong c sẽ được tạo ra. Ví dụ chúng ta khai báo chuỗi s với độ dài là 4 như sau:

char s[4];

Khi đó chuỗi rỗng sẽ được khai báo và không chứa giá trị trong nó như sau:
Chuỗi rỗng trong c

Ví dụ cụ thể:

#include <stdio.h>
int main(void){
char str2[10];
char str3[256];
}

Lưu ý là khi khai báo chuỗi trong C++ thì chúng ta cần phải chỉ định độ dài của nó. Nếu không thì lỗi chương trình sẽ trả về như sau:

#include <stdio.h>
int main(void){
har str1[];
}

>>>c:3:10: error: array size missing in 'str1'
>>> 3 | char str1[];
>>> |

Sau khi khai báo chuỗi, chúng ta có thể tiến hành gán giá trị cho nó vào bất cứ thời điểm cần thiết nào trong chương trình.

Gán chuỗi trong c

Trong bài Khai báo biến trong C chúng ta đã biết cách khai báo một biến với tên và kiểu của nó trước, sau đó thì tại một thời điểm nào đó trong chương trình thì chúng ta có thể tiến hành gán giá trị cho biến đó.

Ví dụ, cách khai báo biến và gán giá trị của nó như sau rất OK:

int num;
num = 1;

Tuy nhiên thì chúng ta lại không thể gán chuỗi trong C bằng cách gán trực tiếp chuỗi ký tự cho nó, giống như cách làm với biến được.

Ví dụ, nếu bạn chỉ khai báo chuỗi bằng cách gán trực tiếp chuỗi giá trị của nó như sau thì lỗi Array type char[] is not assignable sẽ xảy ra trong chương trình:

#include <stdio.h>
int main(void){
char s[5];
s = "love";
printf("%s",s);
}

Chương trình sẽ báo lỗi ngay:

Main.c:4:5: error: array type 'char [5]' is not assignable
s = "love";
~ ^
1 error generated.

Nguyên nhân lỗi cũng rất đơn giản thôi, chuỗi trong C vốn là một mảng chứa các ký tự, do đó bạn không thể gán trực tiếp một chuỗi ký tự vào nó như cách viết trên được.

Thay vào đó, để gán chuỗi trong C, chúng ta cần phải lưu ý rằng chuỗi là mảng trong C, do đó chúng ta cần sử dụng cách gán từng phần tử cho mảng trong C như cách viết sau đây:

#include <stdio.h>
int main(void){
char s[5];
s[0] = 'l';
s[1] = 'o';
s[2] = 'v';
s[3] = 'e';
s[4] = '\0';
printf("%s",s);
}
//love

Tuy nhiên thì cách viết này khá là cồng kềnh, do đó ngoại trừ lý do cần gán giá trị mới cho chuỗi trong chương trình C, thì thay vì khai báo chuỗi trong C và gán chuỗi ban đầu cho nó, chúng ta nên khởi tạo chuỗi với một giá trị ban đầu, giống như cách mà Kiyoshi đã hướng dẫn ở phần trên.

In chuỗi trong

Để in chuỗi trong C, chúng ta sẽ sử dụng hàm printf() với chuỗi định dạng là %s (s là viết tắt của string). Ví dụ cụ thể, chúng ta xuất các chuỗi đã được khởi tạo ra màn hình như sau:

#include <stdio.h>
int main(void){
char str1[] = "C";
char str2[] = "C#";
char str3[] = "C++";

printf("%s %s %s\n", str1, str2, str3);
return 0;
}
//C C# C++

Tổng kết

Trên đây Kiyoshi đã hướng dẫn các bạn về Chuỗi trong C là gì cũng như cách khởi tạo, khai báo, gán và in chuỗi trong C rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về C trong các bài học tiếp theo.

URL Link

https://laptrinhcanban.com/c/lap-trinh-c-co-ban/chuoi-string-trong-c/khai-bao-chuoi-trong-c/

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME  › >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.