Việt chương trình nhập vào một chuỗi ký tự và in ra chiều dài của chuỗi C++

Ở bài Nhập xuất trong c chúng ta đã làm quen với cách khai báo, nhập xuất chuỗi ký tự trong C một cách đơn giản. Trong bài này chúng ta sẽ nói nhiều hơn về các ví dụ, bài tập về chuỗi .

Nội dung chính

  • 1. Tổng quan
  • 2. Một số cách khai báo, khởi tạo chuỗi
  • 3. Một số ví dụ về chuỗi ký tự trong C
  • 3.2 Ví dụ 2: Chuẩn hóa chuỗi
  • 4. Một số hàm về chuỗi và ký tự
  • Khóa học tham khảo:
  • 1. strlen()
  • 2. strcpy()
  • 3. strcat()
  • 4. strchr()
  • 5. strstr()
  • 6. strcmp()
  • 7. strrev()
  • 8. strlwr()
  • 9. strupr()
  • 10. strncat()
  • 11. strncmp()
  • 12. strncpy()
  • Bạn cũngtham khảo thêmvideo hướng dẫn dưới đây:
  • Tham khảo thêm về chuỗi
  • Video liên quan

1. Tổng quan

Chuỗi được xem như là một mảng 1 chiều gồm các phần tử có kiểu char như ký tự, con số và bất cứ ký tự đặc biệt như +, -, *, /, $, #,…
Theo quy ước, một chuỗi sẽ được kết thúc bởi ký tự null (‘\0’ : kí tựrỗng).

Ví dụ: chuỗi “Infoworld” được lưu trữ như sau:

Cách lưu trữ chuỗi ký tự

2. Một số cách khai báo, khởi tạo chuỗi

Chúng ta xét ví dụ sau:

// e.g about string – code by nguyenvanquan7826
#include <stdio.h>
int main()
{
// khai bao chuoi co toi da 50 ky tu
char name[50];
printf(“Hi, What is your name? \nMy name is: “);
gets(name);
printf(“Hi %s, welcome to C language\n”, name);
// khoi tao chuoi ngay khi khai bao
char myLove[] = “Nguyen Thi Lap Lanh”;
puts(myLove);
return 0;
}

Kết quả:

Hi, What is your name? My name is: Nguyen Van Quan Hi Nguyen Van Quan, welcome to C language

Nguyen Thi Lap Lanh

Trong chương trình trên, mình có dùng hàm puts để in chuỗi myLove ra, đây cũng là hàm để xuất chuỗi.

Như trên chúng ta có thể thấy là khai báo chuỗi sau đó nhập chuỗi hoặc vừa khai báo vừa gán giá trị cho chuỗi ngay. Tuy nhiên chúng ta không thể khai báo sau đó mới gán giá trị như sau:

char name[50];
name = “Nguyen Van Quan”; // error

Trong trường muốn khai báo sau đó mới gán giá trị, chúng ta phải dùng hàm copy chuỗi strcpy nằm trong thư viện string.h để lưu giá trị như sau:

// e.g about string – code by nguyenvanquan7826
#include <stdio.h>
#include <string.h>
int main()
{
char name[50];
strcpy(name, “Nguyen Van Quan”);
puts(name);
return 0;
}

3. Một số ví dụ về chuỗi ký tự trong C

Hãy nhập vào một chuỗi ký tự và đếm số từ trong chuỗi. VD chuỗi “Nguyen Van Quan” có 3 từ.

Để làm bài này, chúng ta thấy mỗi từ là các ký tự liên tiếp nhau và phân tách các từ bằng các dấu cách. Do vậy bài này sẽ quy về đếm số dấu cách trong chuỗi. Nếu chuỗi có 1 từ thì không có dấu cách, chuỗi có 2 từ thì có 1 dấu cách giữa 2 từ đó. Tổng quát là có n từ thì sẽ có n-1 dấu cách.

Vấn đề tiếp theo là làm sao đếm được các dấu cách? Đơn giản, như mở đầu ta đã biết chuỗi là một mảng các ký tự, do vậy chúng ta có thể duyệt lần lượt các ký tự của chuỗi để kiếm tra ký tự nào là dấu cách. Nhưng muốn duyệt hết các ký trong chuỗi (mảng ký tự) thì phải biết số lượng ký tự có trong chuỗi (số lượng phần tử có trong mảng).

May mắn là trong thư viện string.h chúng ta có một hàm để lấy độ dài của chuỗi là hàm strlen. (str – string, len – length).

// e.g about string – code by nguyenvanquan7826
#include <stdio.h>
#include <string.h> // for strlen function
int main()
{
char s[50];
printf(“Enter a string: “);
gets(s);
int i, count = 0; // count – bien dem so luong dau cach
for (i = 0; i < strlen(s); i++ )
{
if(s[i] == ‘ ‘)
{
count++;
}
}
printf(“Number word in string is: %d\n”, count + 1 );
return 0;
}

Code khá đơn giản, các bạn đọc, hiểu và chạy thử nhé.

Tuy nhiên code trên chúng ta có một số lưu ý:

  • Để biểu diễn ký tự thì ta đặt trong cặp nháy đơn, chuỗi thì chúng ta đặt trong cặp nháy kép. Nên ở trên dấu cách đặt trong cặp nháy đơn và chúng ta có thể so sánh 2 ký tự bằng các phép so sánh như với 2 số, còn 2 chuỗi thì không thể so sánh được như vậy, các bạn có thể đọc thêm về cách so sánh chuỗi.
  • Do chuỗi là một mảng các ký tự, nên muốn lấy ký tự thứ i trong chuỗi s thì ta truy cập như với mảng là s[i].
  • Ví dụ này chỉ áp dụng khi chuỗi có độ dài lớn hơn 0 và không có dấu trắng thừa ở đầu, cuối hoặc giữa các từ.
  • Như vòng lặp for ở trên, chúng ta có điều kiện i < strlen(s), tuy nhiên bản chất của hàm strlen là một vòng lặp nữa để đếm số lượng ký tự của chuỗi s. Nên nếu chúng ta viết trực tiếp điều kiện như trên thì trong mỗi lần lặp, chương trình lại phải chạy lại lệnh strlen lặp để đếm số lượng ký tự của s. Điều này là thừa và làm chương trình chạy lâu hơn. Do vậy chúng ta sẽ đặt 1 biến là độ dài của chuỗi ra ngoài như sau:

int len = strlen(s);
for (i = 0; i < len; i++ )
{
if(s[i] == ‘ ‘)
{
count++;
}
}

3.2 Ví dụ 2: Chuẩn hóa chuỗi

Hãy nhập vào một chuỗi và xóa bỏ toàn bộ các dấu cách thừa ở đầu, cuối và giữa các từ nếu có.

Bài toán này là bài toán quan trọng cho các phần mềm, sau này khi lưu trữ, nhập liệu cần lưu ý để dữ liệu được chuẩn, không thừa thiếu gây sai sót trong quá trình xử lý và tím kiếm.

  • Ký tự đầu tiên của chuỗi s là dấu cách thì s[0] là dấu cách, chúng ta xóa nó là xong.
  • Các ký tự cách giữa các từ nếu thừa tức là s[i] và s[i+1] cùng là dấu cách. Chúng ta xóa 1 trong 2 là ok, vì các từ sẽ phân tách nhau bởi 1 dấu cách nên ta phải dữ lại 1 dấu cách.
  • Các ký tự ở cuối chuỗi là dấu cách thì chúng ta sẽ xóa bằng cách gán ký tự cuối cùng là ký tự rỗng ‘\0’ là xong. Nhớ rằng ký tự cuối cùng của mảng n phần tử là a[n-1], do vậy ký tự của chuỗi là s[ strlen(s) – 1 ].

Vấn đề tiếp theo là làm sao xóa 1 ký tự trong chuỗi? Các bạn nhìn lại ví dụ trên chúng ta có dùng hàm copy chuỗi, và để xóa 1 hoặc một số ký tự trong chuỗi chúng ta sẽ dùng hàm này nhưng sẽ dùng theo copy địa chỉ.

Để xóa từ ký tự i đến ký tự j trong chuỗi s, chúng ta dùng lệnh strcpy(&s[i], &s[j+1]);. Bản chất là chúng ta copy địa chỉ của s[j+1] về địa chỉ của s[i].

// e.g about string – code by nguyenvanquan7826
#include <stdio.h>
#include <string.h>
int main()
{
char s[50];
printf(“Enter a string: “);
gets(s);
// delete all space at start of string
while( s[0] == ‘ ‘ ) strcpy(&s[0], &s[1]);
// delete all space at end of string
while( s[ strlen(s)-1 ] == ‘ ‘) s[ strlen(s)-1 ] = ‘\0’;
// delete all space between two word
int i;
for(i = 0; i < strlen(s); i++)
{
if( s[i] == ‘ ‘ && s[i+1] == ‘ ‘)
{
strcpy(&s[i], &s[i+1]);
i–; // why???
}
}
printf(“s=%s.\n”, s);
return 0;
}

Ok. Các bạn chạy thử nhé. Nhớ nhập chuỗi thừa các dấu cách ở đầu, cuối, giữa để kiểm tra.

Một câu hỏi nhỏ coi như bài tập làm thêm cho các bạn là hãy nhìn dòng code i–; // why??? và nghĩ tại sao lại có dòng này? Tại sao i phải giảm đi 1?

4. Một số hàm về chuỗi và ký tự

Các hàm kiểm tra ký tự. (các hàm này trong thư viện ctype.h) Nếu đúng thì hàm cho giá trị khác 0. Nếu sai thì hàm cho giá trị bằng 0.

  • Int isalpha(int c) : kiểm tra ký tự có là chữ cái không.
  • Int isdigit(int c) : kiểm tra xem ký tự có là chữ số không.
  • Int islower(int c): kiểm tra ký tự có là chữ thường không.
  • Int isupper(int c): kiểm tra ký tự có là chữ hoa không.
  • Int ispace(int c): kiểm tra ký tự có là trống không (\n, dấu cách, \t).

Các hàm sử lý xâu ký tự. (các hàm này nằm trong thư viện string.h)

  • Int strlen(char *s) trả về độ dài của xâu s;
  • Char *strupr(char *s) đổi chữ thường trong xâu s sang chữ hoa.
  • Char *strlwr(char *s) đổi chữ hoa sang chữ thường.
  • Char *strcat(char *s1, char *s2) nối xâu s2 vào xâu s1;
  • Int strcmp(char *s1, char *s2) cho giá trị âm nếu xâu s1 nhở hơn xâu s2. Và cho giá tị dương nếu xâu s1 lớn hơn xâu s2. Trả về giá trị bằng 0 nếu xâu s1 bằng xâu s2.
  • Int strcmpi (char *s1, char *s2) so sánh 2 xâu nhưng không phân biệt chữ thường và chữ hoa.
  • Char *strcpy(char *s1, char *s2) copy xâu s2 vào xâu s1.
  • Char *strncpy(char *s1, char *s2, int n) sao chép n ký tự đầu của xâu s2 sang xâu s1
  • Char *strnset(char *s ,int c, int n) dùng để sao chép n lần ký tự c vào xâu s.
  • Char *strstr(char *s1, char *s2) tìm sự xuất hiện của xâu s2 trong xâu s1. Nếu tìm thấy hàm cho địa chỉ của xâu con trong xâu s1. Trái lại cho NULL.
  • Char *strrev(char *s) dùng đảo ngược xâu s.Nếu thành công hàm cho địa chỉ xâu đã đảo.

Bài tập

  1. Viết chương trình tách tên từ một chuỗi cho trước. VD tên Nguyen Thi Lap Lanh => tách được Lanh
  2. Viết chương trình chuẩn hóa chuỗi tên riêng. VD:ha noi => Ha Noi.
  3. Viết hàm chuyển đổi 1 chuỗi sang chữ thường và 1 hàm chuyển đổi sang chữ HOA.
  4. Viết chương trình nhập vào một chuỗi ký tự rồi đếm xem trong chuỗi đó có bao nhiêu chữ “ng”.
  5. Viết chương trình nhập vào một chuỗi ký tự. Kiểm tra xem chuỗi đó có đối xứng không? Chuỗi đối xứng là chuỗi khi viết ngược lại vẫn được như chuỗi ban đầu. VD level
  6. Viết chương trình nhập vào số có 3 chữ số. Cho biết dòng chữ mô tả giá trị con số đó. Ví dụ 123 -> một trăm hai mươi ba.

Khóa học tham khảo:

1.Lập trình C/C++ cho các bạn từ 12-17 tuổi

2.Lập trình C/C++ cho các bạn từ 18 tuổi

Ngôn ngữ lập trìnhC hỗ trợ cho chúng ta khánhiều hàm để xử lý hay thao tác vớichuỗi. Các hàm này bạncó thể tìm thấy trong thư viện<string.h>(tương ứng vớitập tin string.h trong thư mục INCLUDE đối với phiên bản BorlandC V3.1).

Xin được nhắc lại, để khai báo một chuỗi ta khai báo mảng ký tự một chiều, ví dụ câu lệnhchar str[20];sẽ tạo một chuỗi có tên str với kích thước tối đa là 20 ký tự. Còn để khai báo một mảng chuỗi thì ta khai báo một mảng ký tự hai chiều, chẳng hạn như câu lệnhchar arrstr[10][25];sẽ tạo một mảng gồm 10 chuỗi và mỗi chuỗi có tối đa 25 ký tự.

Một chuỗi “abc” chẳng hạn, thực ra sẽ có 4 ký tự ‘a’, ‘b’, ‘c’, và ký tự kết thúc chuỗi ‘\0’. Ký tự ‘\0’ ứng với NULL.

Các ký tự đặc biệt thể hiện trong chuỗi:

\\
Gạch chéo ngược (xổ trái)

\”
Nháy đôi (nháy kép)

\’
Nháy đơn

\n
Newline (line feed) – Xuống dòng

\r
Carriage return

\b
Backspace (Xóa lùi)

\t
Horizontal tab (Tab ngang)

\f
Form feed

\a
Alert (bell) (Phát tiếng kêu thông báo)

\v
Vertical tab (Tab dọc)

\?
Question mark (dùng trong đồ họa 3 chiều)

\nnn
Character with octal valuennn

\xhh
Character with hexadecimal valuehh

Ba loại hàm có sẵn trong thư viện string.h:

  • các hàmmemthao tác với chuỗi ký tự tùy ý mà không liên quan đến ký tự rỗng;
  • các hàmstrthao tác với các chuỗi ký tự kết thúc bằng null;
  • các hàmstrnthao tác với chuỗi các ký tự không rỗng.

Dưới đây ta sẽ tìm hiểucác hàm xử lý chuỗi phổ biếntrong ngôn ngữ C.

1. strlen()

Hàm strlen() (string length) dùng để lấy kích thước chuỗi (làsố lượng ký tự của chuỗi).Kích thướccủa chuỗi thường được dùng trong cácvòng lặp lấy từng ký tự củachuỗi. Cú pháp của hàm là:

strlen(str);

, trong đó,strcó thể là một biến chuỗi hoặc một hằng chuỗi thì cũng đều được chấp nhận.

Chương trình dướiđây hiển thị nội dung của một chuỗi trong đó giữa các ký tự được đặt thêm một ký tự ‘*’:

#include<

stdio

.h>
#include<

conio

.h>
#include<

string

.h>
main() {

char

str[

10

] =

“V1Study”

;

int

i;
/* truy xuất và hiển thị từng ký tự của chuỗi */

for

(i =

0

; i<

strlen

(str); i++)
printf(

“%c * “

, str[i]);

return

0

;
}

Kết quả của chương trình trên được minh họa như sau:

V * 1 * S * t * u * d* y *

2. strcpy()

Hàm strcpy() (string copy) dùng để gán chuỗi cho chuỗi.

Ngôn ngữC không cho phép ta gán trực tiếp chuỗi cho chuỗi thông qua toán tử gán (=) vì chuỗi là mảng ký tự. Vì vậy, ta cần phải sử dụng hàm strcpy(). Hàm này có cú pháp như sau:

strcpy(str1, str2);

, trong đó,str1vàstr2đều có thể là các biến chuỗi hoặc hằng chuỗi.

Hàm strcpy() sẽ gán giá trị của chuỗi str2 cho chuỗi str1, đồng thời hàmtrả về chuỗi str1.

Đoạn mãsau đây minh họa việc sử dụng hàm strcpy(). Nó thay đổi tên của một khách sạn và hiển thị tên mới.

#include<

stdio

.h>
#include<

conio

.h>
#include<

string

.h>
main() {

char

tenkhachsan1[

15

] =

“BLUE Hotel”

;

char

tenkhachsan2[

15

] =

“GREEN Hotel”

;
printf(

“Ten cu cua khach san la

\”

%s

\”\n

, tenkhachsan1);
/* tiến hành thay đổi tên của khách sạn */
strcpy(tenkhachsan1, tenkhachsan2);
/* sau đó hiển thị tên mới */
printf(

“Sau khi doi, khach san co ten la

\”

%s

\”\n

, tenkhachsan2);

return

0

;
}

3. strcat()

Hàm strcat() (string concatenate)được sử dụng để nối hai chuỗi vào nhau. Cú pháp củahàm là:

strcat(str1, str2);

Hàm sẽ tiến hành nối chuỗi str2 vào sau chuỗi str1 vàtrả về nội dung của chuỗi str1 sau khi nối.

Chương trình sau đây nhận vào họ, đệmvà tên, sau đónối chúng với nhau và hiển thị ra họ tên đầy đủ.

#include<

stdio

.h>
#include<

conio

.h>
#include<

string

.h>
main() {

char

ho[

10

]; //họ

char

dem[

15

]; //đệm

char

ten[

10

]; //tên

char

hovaten[

35

]=

“”

;
printf(

\n

Moi nhap ho: “

);
/* nhập họ */
gets(ho);
/* tiến hành nối họ và chuỗi chứa họ và tên */
strcat(hovaten, ho);
printf(

\n

Nhap vao dem: “

);
/* nhập đệm */
gets(dem);
/* đưa thêm dấu cách */
strcat(hovaten,

” “

);
/* rồi đưa đệm vào */
strcat(hovaten, dem);
printf(

\n

Xin moi nhap ten cua ban: “

);
/* cuối cùng nhập vào tên*/
gets(ten);
strcat(hovaten,

” “

);
/* rồi đưa tên vào */
strcart(hovaten, ten);
/* và hiển thị ra màn hình họ và tên đầy đủ */
printf(

\n

Ho va ten cua ban la:

\”

%s

\”

, hovaten);

return

0

;
}

4. strchr()

Hàm strchr() (string character) dùng để tìm kiếm ký tự trong chuỗi.Cú pháp củahàm là:

strchr(str, chr);

, trong đó,chrcó thể là một biến ký tự hoặc một hằng ký tự đều được.

Quy cách hoạt động của hàm này là nó sẽ tìm xem trong chuỗi str có ký tự chr hay không, nếu có thì hàm trả về chuỗibắt đầu từ vị trí đầu tiên tìm thấy ký tựchrcho đến hết chuỗistr, ngược lại thì hàm trả vềNULL.

Chương trình sau đây xác định liệu ký tự ‘a’ có xuất hiện trong tên hai thành phố hay không.

#include<

stdio

.h>
#include<

conio

.h>
#include<

string

.h>
main() {

char

str1[

15

] =

“Ha Noi”

;

char

str2[

30

] =

“Thanh pho Ho Chi Minh”

;

char

chr =

‘a’

;
clrscr();
/* nếu khác NULL tức là tìm thấy chr trong str1 */

if

(strchr(str1, chr) != NULL){
/* thì in ra ra thông báo có xuất hiện */
printf(

\n

‘%c’ co xuat hien trong chuoi

\”

%s

\”\n

,chr,str1);
}

else

{ /* nếu không thì thông báo không xuất hiện */
printf(

\n

‘%c’ khong xuat hien trong chuoi

\”

%s

\”\n

,chr,str1);
}
/* kiểm tra xem ‘a’ có nằm trong chuỗi thứ hai không */

if

(strchr(str2, chr) != NULL) {
printf(

\n

‘%c’ xuat hien trong

\”

%s

\”\n

,chr,str2);
}

else

{
printf(

\n

‘%c’ khong xuat hien trong

\”

%s

\”\n

,chr,str2);
}

return

0

;
}

5. strstr()

Hàm strstr() (string string) dùng để tìm kiếm chuỗi trong chuỗi.Cú pháp của hàm là:

strstr(Chuỗi1, Chuỗi2)//tìm Chuỗi2 trong Chuỗi1

, trong đó nếu không tìm thấyChuỗi2trongChuỗi1thìhàm trả về giá trị NULL.Ngược lại, hàm sẽ trả về một chuỗi bắt đầu từ vị trí đầu tiên tìm thấyChuỗi2cho đến hếtChuỗi1.Ví dụ:

//khai báo các chuỗi

char

s1

[

10

] =

“abcdefghi”

, s2[

5

] =

“cde”

, s3[

5

] =

“cdf”

;
strstr(s1, s2); //sẽ tìm chuỗi s2 trong chuỗi s1, hàm trả về kết quả là: “cdefghi”
strstr(s1, s3); //sẽ tìm chuỗi s3 trong chuỗi s1, hàm trả về kết quả là NULL vì trong chuỗi s1 không có chuỗi “cdf”

6. strcmp()

Hàm strcmp() (string compare) dùng để so sánh hai chuỗi với nhautheo tiêu chí so sánhlàthứ tự ký tự trong bảng mã ASCII.Hàm này thường hay được dùng để sắp xếp các chuỗi theo chiều tăng hoặc giảm theo vần A B C, ví dụ như sắp xếp các tên sinh viên, các tên môn học theo trật tự tăng hoặc giảm.Cú pháp sử dụng hàm này là như sau:

strcmp(s1, s2)

Hàm sẽ trả về một số chính là hiệu của hai ký tự cuối cùng đem so sánh. Cụ thể hàm sẽ trả về giá trị theo các trường hợp sau:

– mộtsốâm (<0) nếu chuỗis1nhỏ hơn chuỗis2.

– số0 (==0) nếu chuỗis1giống hệt chuỗis2.

– một sốdương (>0) nếu chuỗis1lớn hơn chuỗis2.

Quy cách so sánh:

Việc so sánh sẽ bắt đầu từ hai ký tự đầu tiên bên trái của hai chuỗi.Bắt đầu từ bên trái, hàm sẽ lấy từng ký tự của chuỗis2đem so sánh với ký tự ở vị trí tương ứng của chuỗis1.Nếu hai ký tự đem so sánh giống nhau thì sẽ chuyển sang so sánh hai ký tự kế tiếp bên phải.Nếu hai ký tự khác nhau thì lập tức dừng lại và đưa ra kết quả: ký tự nào có thứ tự trong bảng mã ASCII lớn hơn thì chuỗi tương ứng sẽ lớn hơn chuỗi kia.

Chẳng hạn:

Chuỗi “abc” nhỏ hơn chuỗi “abd”, vì ký tự ‘d’ có vị trí lơn hơn ký tự ‘c’ trong bảng mã ASCII.

Chuỗi “abc” nhỏ hơn chuỗi “abcd”.

Chuỗi “An” nhỏ hơn chuỗi “Anh”, chuỗi “Anh” nhỏ hơn chuỗi “Binh”, …

Ví dụ:

char

s1

[

5

]=

“Phan”

, s2[

5

]=

“Phi”

, s3[

5

]=

“Phan”

, s4[

7

]=

“Nhuong”

;
strcmp(s1,s2); //sẽ so sánh s2 với s1, hàm sẽ trả về một số âm (<0)
strcmp(s1,s3); //hàm trả về 0
strcmp(s1,s4); //hàm trả về một số dương (>0)

Chương trình sau đây so sánh biếnname1với các biếnname2,name3,name4và hiển thị kết quả của phép so sánh:

#include<

stdio

.h>
#include<

conio

.h>
#include<

string

.h>
main() {

char

str1[

15

] =

“Ha Noi”

;

char

str2[

15

] =

“Da Nang”

;

char

str3[

15

] =

“Sai Gon”

;

char

str4[

15

] =

“Ha Noi”

;

int

sosanh;
sosanh = strcmp(str1,str2);
printf(

\n\”

%s

\”

so sanh voi

\”

%s

\”

thi tra ve %d

\n

, str1, str2, sosanh);
sosanh = strcmp(str1, str3);
printf(

\n\”

%s

\”

so sanh voi

\”

%s

\”

thi tra ve %d

\n

, str1, str3, sosanh);
sosanh = strcmp(str1,str4);
printf(

\n\”

%s

\”

so sanh voi

\”

%s

\”

thi tra ve %d

\n

, str1, str4, sosanh);

return

0

;
}

7. strrev()

Hàm strrev() (string reverse) dùng để đảo ngược trật tự một chuỗi. Hàm trả về chuỗi đã đượcđổi ngược.Cú pháp của hàm là:

strrev(Chuỗi)

Ví dụ, nếu bạn thực hiện lệnhstrrev(“Lap trinh vien”);, thì kết quả là chuỗisẽ đảo ngượcthành “neiv hnirt paL”.

8. strlwr()

Hàm strlwr() (string lowercase) dùng để chuyểncác ký tự từ ‘A’ đến ‘Z’ trong một chuỗi thành in thường, các ký tự khác không thay đổi.

Ví dụ, câu lệnhstrlwr(“ABC”);sẽ chuyển chuỗi “ABC” thành “abc”.

9. strupr()

Hàm strlupr() (string uppercase) dùng để chuyển các ký tự từ ‘a’ đến ‘z’ trong một chuỗi thành in HOA, các ký tự khác không thay đổi.

Ví dụ, lệnhstrupr(“vietnam”);sẽ chuyển chuỗi “vietnam”thành chuỗi”VIETNAM”.

10. strncat()

Hàm này dùng để nối n ký tự của chuỗi sau vào sau chuỗi trước. Cú pháp của hàm như sau:

strncat(s1, s2, n)

Theo đó, hàm sẽ nối n ký tự của chuỗi s2 vào sau chuỗi s1.

Ví dụ:

#include<

stdio

.h>
#include<

string

.h>
main(){

char

s1[]=

“abcd”

;

char

s2[]=

“1234”

;
strncat(s1, s2,

2

);
puts(s1);//Kết quả là: abcd12

return

0

;
}

11. strncmp()

Hàm này dùng để so sánh n ký tự đầu tiên của hai chuỗi. Cú pháp như sau:

strncmp(s1, s2, n)

Theo đó, hàm sẽ so sánh n ký tự đầu củahai chuỗi s1 và s2 theo quy cách so sánh giống như hàmstrcmp().

Ví dụ:

#include<

stdio

.h>
#include<

string

.h>
main(){

char

s1[]=

“abcd”

;

char

s2[]=

“abde”

;
printf(

“%d”

,strncmp(s1, s2,

2

));
//So sánh 2 ký tự đầu của 2 chuỗi, sẽ trả về 0

return

0

;
}

12. strncpy()

Cú pháp:

strncpy(s1, s2, n)

Hàm này dùng để gán n ký tự đầu tiên của chuỗi s2 cho n ký tự đầu tiên của chuỗi s1.

Ví dụ:

#include<

stdio

.h>
#include<

string

.h>
main(){

char

s1[]=

“abcd”

;

char

s2[]=

“1234”

;
strncpy(s1, s2,

2

);
//gán 2 ký tự đầu tiên của s2 cho 2 ký tự đầu tiên của s1
puts(s1);//Kết quả của s1: 12cd

return

0

;
}

Bạn cũngtham khảo thêmvideo hướng dẫn dưới đây:

Tham khảo thêm về chuỗi

  • Bài tập phần chuỗi
  • Bài tập phần mảng chuỗi
  • Kiểm tra tính đối xứng của 1 chuỗi
  • Kiểm tra chuỗi có chứa ký tựinhoa không
  • Kiểm tra chuỗi có chứa kýsố không
  • Đếm số từ trong chuỗi
  • Cắt ký tự trắng (space) cuối chuỗi
  • Cắt ký tự trắng ở đầu chuỗi
  • Đếm số lần xuất hiện từng ký tự trong chuỗi
  • Cắt ký tự trắng thừa ở giữa chuỗi