Cắt chuỗi là một bài tập cơ bản khi ta học lập trình, cắt chuỗi tức là từ một chuỗi cha ban đầu ta sẽ cắt ra một chuỗi con từ vị trí x tới y từ chuỗi cha đó. Cắt chuỗi là một bài tập mà sau này khi làm thực tế chúng ta cũng sẽ gặp một số vấn đề tương tự.
Vậy làm thế nào để cắt chuỗi cùng mình tìm hiểu trong bài viết này nhé.
Cắt chuỗi trong C
Hàm có sẵn
Trong C để cắt chuỗi ta có thể sử dụng hàm là strncpy.
Cú pháp
strncpy(chuỗi coppy, chuỗi nguồn + (x), m);
Với x ở đây là vị trí bắt đầu, m là số ký tự cắt ra tính từ vị trí x.
Về bản chất thì hàm này là một hàm coppy m ký tự tự chuỗi nguồn tới chuỗi đích. Như vậy ta hoàn toàn có thể áp ụng hàm này để cắt chuỗi.
Ta có ví dụ minh họa như sau:
Bây giờ mình có chuỗi là abcdefghiklm, vậy mình muốn cắt ra 5 ký tự tính từ vị trí số 4(từ ký tự d) mình sẽ viết code như sau:
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "abcdefghiklm";
char t[64];
strncpy( t, str+3, 5 ); //trong Code vị trí bắt đầu tính từ 0 nên cắt từ vị trí số 4 ta sẽ truyền vào là 3
t[5] = '\0'; /*Chuỗi là một mảng ký tự liên tiếp và kết thúc chuỗi là một ký tự
rỗng, khi khai báo có thể ký tự thứ t[5]mang giá trị rác và nó là một ký tự thì lúc đó chuỗi mới
sẽ tính cả ký tự đó...vì thế ta nên gắn ký tự tại vị trí này là rỗng*/
printf("%s", t);
}
Và đây là kết quả khi chạy chương trình
defgh
Tự viết hàm cắt chuỗi
Và ta cũng có thể tự viết lại một hàm cắt chuỗi như sau
char *catchuoi(char a[], int x, int y){
char *temp = (char *)malloc(100 * sizeof(char));
for(int i = x;i<=y;i++){
temp[i-x] = a[i];
}
return temp;
}
Hàm này có tác dụng là cắt chuỗi a, từ vị trí x tới vị trí y.
Ví dụ bây giờ mình sẽ cắt chuỗi abcdefghiklm từ vị trí 4 tới vị trí số 8.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *catchuoi(char a[], int x, int y){
char *temp = (char *)malloc(100 * sizeof(char));
for(int i = x;i<=y;i++){
temp[i-x] = a[i];
}
return temp;
}
int main() {
char* a = "abcdefghiklm";
char *b;
b = catchuoi(a, 3, 7);//Chuỗi bắt đầu từ vị trí 0, nên để cắt chuỗi vị trí 4-8 ta sẽ truyền vào 3-7
printf("%s", b);
}
Kết quả khi chạy chương trình
defgh
Cắt chuỗi trong C++
Trong C++ chuỗi ta sẽ sử dụng lớp string.
Và để cắt chuỗi trong lớp string ta có phương thức là substr.
Cú pháp
string substr(int vi_tri_bat_dau_cat, int so_ky_tu);
Vẫn tiếp với ví dụ bên trên ta viết code C++ như sau:
#include <iostream>
#include <cstring>
using namespace std;
int main() {
string a = "abcdefghiklm";
string b;
b = a.substr(3,5);
cout<<b;
}
Kết quả khi chạy chương trình
Cảm ơn bạn đã đọc bài viết! Chúc bạn học tốt!
XEM THÊM Hướng dẫn chia và gộp phân vùng ổ cứng trên Windows Kiếm tiền Accesstrade, kiếm tiền tại nhà với Accesstrade.vn – Tiếp thị liên kết Top 4 App kiếm tiền online trên điện thoại tốt nhất 2022 1000 lượt truy cập website kiếm được bao nhiêu tiền từ Google Adsense