Cắt chuỗi trong C

Hướng dẫn cắt chuỗi chuỗi trong C. Bạn sẽ học được cách tự tạo ra chương trình cắt chuỗi chuỗi trong C thông qua hàm strncpy() sau bài viết này.

Cắt chuỗi trong C bằng hàm strncpy()

Hàm strncpy() trong C vốn được sử dụng giúp chúng ta copy số lượng ký tự chỉ định từ chuỗi ban đầu. Ứng dụng hàm strncpy(), chúng ta có thể copy một số lượng ký tự từ trong phạm vi chuỗi ban đầu để tạo ra chuỗi con, và qua đó hoàn thành được việc cắt chuỗi trong C.

Chúng ta sử dụng hàm strncpy ( ) để cắt chuỗi trong C với cú pháp sau đây :

strncpy(target, source + begin, n)

Bạn đang đọc: Cắt chuỗi trong C

Trong đó :

  • target là chuỗi đích để chứa kết quả cắt
  • source là chuỗi nguồn.
  • begin là vị trí bắt đầu cắt trong chuỗi nguồn
  • n là số ký tự sẽ cắt từ vị trí begin.

Hiểu đơn giản thì cú pháp trên sẽ cắt n ký tự từ vị trí begin trong chuỗi source và trả về kết quả là chuỗi target.

Cần chú ý là nếu chỉ định giá trị của n nhỏ hơn độ dài của chuỗi nguồn khi sử dụng hàm strncpy() thì ký tự kết thúc chuỗi \0 sẽ không được copy vào chuỗi đích, do đó chúng ta cần phải thêm xử lý nối ký tự này vào chuỗi đích target.

Ví dụ cụ thể, chúng ta sử dụng hàm strncpy() để cắt 5 ký tự từ vị trí thứ 3 trong chuỗi C như sau:



main() {
char str[] = "01234567890";
char t[64];

strncpy( t, str+3, 5 );
t[5] = '\0';
printf( "%s\n", t );
}

Tự tạo hàm cắt chuỗi trong C

Ở trên là ví dụ đơn thuần sử dụng hàm strncpy ( ) để cắt chuỗi trong C. Thực tế khi sử dụng hàm này để cắt chuỗi thì tất cả chúng ta cần phải quan tâm tơi nhiều trường hợp khác để tránh xảy ra lỗi trong chương trình .

Và chúng ta có thể tự tạo một hàm tổng quát để cắt chuỗi trong C thông qua strncpy() để xử lý trong tất cả các trường hợp như sau đây:






char* substring(char* source, size_t begin, size_t n, char* target){
int target_size = sizeof(target);


assert(source != NULL);
assert(target != NULL);
assert(n + 1 <= target_size);


if (begin < strlen(source)) {

strncpy(target, source + begin, n);

target[n] = '\0';
}

else {
target[0] = '\0';
}

return target;
}

int main(void){
char str[] = "abcdef";
char target[4];

puts(substring(str, 0, 3, target ));
puts(substring(str, 2, 3, target ));
puts(substring(str, 2, 0, target));
puts(substring(str, 5, 3, target));

return 0;
}

Kết quả chương trình:

abc
cde

f

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn cách cắt 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 khám phá những kiến thức và kỹ năng sâu hơn về C trong những bài học kinh nghiệm tiếp theo .

Source: https://sgn888.net
Category: Thủ Thuật

Bài viết liên quan

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 *