Lập Trình C: Chuỗi (String) | V1Study

Học viện Đào tạo và Công nghệ V1Study
  • Đào tạo Độ tuổi từ 5 - 11 Độ tuổi từ 12 - 17 Từ 18 tuổi
  • Lập trình Python Lập trình C C++ Java C# - C Sharp Android Scratch Pascal Robot mBot
  • Web ReactJS HTML5 CSS3 JavaScript Node.js JSP ASP.NET Core jQuery PHP
  • FW-CMS Laravel AngularJS Flutter Magento Bootstrap VueJS CodeIgnitor WordPress Sass Drupal
  • Video Video Python Video Lập trình C Video C# Video Java Video HTML5-CSS3-JavaScript Video SQL Server Video PHP Video jQuery Video Android Video C++ Video Scratch
  • Video1 Video XML-JSON Video MySQL Video Excel Video Giải thuật và Lập trình Video Sức khỏe Video Drupal Video mBot Video Giáo dục - Khoa học
  • Other Unity Giải thuật và lập trình Giải thuật và lập trình - C CCNA Mạng máy tính Design Patterns English Facebook SEO Git Tin học đại cương Japanese App-Uti Download
  • Data SQL Server XML JSON MySQL
  • News
Học viện Đào tạo và Công nghệ V1Study ≡ Lập trình C Bài học Danh sách bài học Bài 1. Giới thiệu Bài 2. Đặc điểm Bài 3. Hướng dẫn viết mã lệnh Bài 4. Hướng dẫn lập tư liệu nội bộ Bài 5. Quy tắc đặt tên Bài 6. Từ khoá (Keyword) Bài 7. Kiểu dữ liệu (Data type) Bài 8. Hằng (Constant) Bài 9. Biến (Variable) Bài 10. Định dạng, ký tự đặc biệt và bổ từ Bài 11. Lớp lưu trữ Bài 12. Phép toán số học Bài 13. Phép Gán (Assignment) Bài 14. Phép toán So sánh Bài 15. Phép toán Logic (Logical) Bài 16. Phép toán Logic nhị phân Bài 17. Độ ưu tiên phép toán Bài 18. printf() & scantf() Bài 19. Ép kiểu (Cast) Bài 20. if-else và ?: Bài 21. switch-case Bài 22. Vòng lặp for Bài 23. Vòng lặp while Bài 24. Vòng lặp do-while Bài 25. break; và continue; Bài 26. Hàm (Function) Bài 27. Lời gọi hàm (Call Function) Bài 28. Biến tổng thể và biến cục bộ Bài 29. Đệ quy (Recursion) Bài 30. Mảng (Array) một chiều Bài 31. Mảng hai chiều Bài 32. Chuỗi (String) Bài 33. Mảng chuỗi Bài 34. Hàm xử lý chuỗi (String) Bài 35. Con trỏ (Pointer) Bài 36. Cấp phát bộ nhớ Bài 37. Cấu trúc (Struct) Bài 38. Cơ bản về tập tin Bài 39. Quản lý tập tin văn bản Bài 40. Quản lý tập tin nhị phân Bài 41. Các hàm xử lý tập tin Ví dụ Giải phương trình bậc 1 Giải phương trình bậc 2 Nguyên hay thực Nguyên âm hay Phụ âm Số ngày trong tháng Tam giác vuông trái xuôi Cách nhập liệu cho mảng Cách xóa phần tử khỏi mảng Cách sắp xếp mảng Tìm Max, Min bằng phương pháp sắp xếp Tìm số nguyến tố trong mảng số thực Kiểm tra một số có phải số nguyên hay không Kiểm tra một số có phải số chính phương không Kiểm tra một số có phải số nguyên tố không Đếm số từ trong chuỗi Xóa phần tử mảng Tính điểm tổng kết môn học Lập trình C Tuổi cha và tuổi con Bài tập Bài tập cơ bản Bài tập phần điều kiện Bài tập phần vòng lặp (Loop) Bài tập phần mảng (Array) Bài tập phần hàm (function) Bài tập phần cấu trúc (struct) Bài tập phần tập tin (File) Quiz Tham khảo Hàm toán học (Math) Bảng mã ASCII Hệ thống nhớ máy tính Danh sách kiểu dữ liệu Phím tắt BorlandC Cách lấy kích thước mảng Chuyển từ kiểu int sang chuỗi Hàm hoán vị 2 số không cần dùng con trỏ Tìm kiếm nhị phân (Binary Search) Hướng dẫn sử dụng CodeBlocks bản nosetup 7 lý do bạn nên nắm được kiến thức C/C++ Sự khác biệt giữa mã định dạng %d và %i QuickSort Bài toán mã đi tuần Hàm xử lý ký tự (Character) Tích hợp C/C++ vào VS Code Videos Chỉnh sửa cơ bản Khung chương trình C Xác định nguyên hay thực Hoán vị hai số Xác định tính nguyên tố (prime) Demo giải phương trình bậc 1 Demo giải phương trình bậc 2 Phương trình bậc 2 - Tạo hàm Cách nhập liệu cho mảng một chiều Cách xóa phần tử khỏi mảng Cách sắp xếp mảng Tìm Max, Min bằng phương pháp sắp xếp Cách khai báo biến Xác định tính chính phương Kiểm tra số nguyên Kiểm tra tính chính phương Cách sắp xếp mảng 2 chiều Solutions Solution bài tập cơ bản Solution Bài tập phần điều kiện Solution bài tập phần vòng lặp Solution bài tập phần mảng số Tính tổng dãy số nguyên (không phải mảng) Đáp án tham khảo Bộ đề Đề 1 Đề 2 Đề 3 Đề 4 Đề 5 Đề 6 Đề 7 Đề 8 Đề 9 Đề 10 Đề 11 Đề 12 Đề 13 Đề 14 Đề 15 Đề 16 Đề 17 Đề 18 Đề 19 Đề 20 Đề 24 Taught Cơ sở lập trình - Buổi 1 Chữa bài tập 1 phần hàm Kiến thức phần hàm (function) Kiến thức phần mảng Mảng ký tự - Chuỗi Struct Lập trình C: Chuỗi (String) Khóa học qua video: Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript Đăng ký Hội viên Tất cả các video dành cho hội viên

Một số khái niệm

Một chuỗi (string) là một tập hợp các ký tự kết thúc bằng ký tự '\0' (NULL) có thứ tự ký tự trong bảng mã ASCII là 0. Một mảng ký tự một chiều và hai chiều lần lượt được coi là một chuỗi và một mảng chuỗi.

Một biến chuỗi được sử dụng để lưu trữ một dãy các ký tự, đó là hằng chuỗi.

Một hằng chuỗi là một dãy các ký tự và bắt buộc phải đặt trong cặp nháy kép. Giả sử ta có một chuỗi với có nội dung là "V1Study.com", thì trong bộ nhớ nó được lưu trữ như sau:

'V' '1' 'S' 't' 'u' 'd' 'y' '.' 'c' 'o' 'm' '\0'

Ký tự '\0' được tự động thêm vào bởi trình dịch để đánh dấu điểm kết thúc của chuỗi. Vậy nên, ta nên khai báo một biến chuỗi với kích thước lớn hơn kích thước tối đa của chuỗi một đơn vị để có vị trí lưu trữ ký tự kết thúc.

Khai báo chuỗi

Bản chất của việc khai báo một chuỗi chính là khai báo một mảng ký tự một chiều. Vì thế, ta có cú pháp khai báo chuỗi như sau:

char Tên_chuỗi[Kích_thước];

, trong đó, Tên_chuỗi do ta tự đặt tuân theo quy tắc đặt tên chung của ngôn ngữ C, Kích_thước là một số nguyên dương thể hiện số lượng ký tự tối đa của chuỗi.

Ví dụ, nếu bạn muốn khai báo một chuỗi có tên là str và có kích thước tối đa là 25 ký tự, ta có thể làm như sau: char str[26];

Dưới đây là một số ví dụ nữa về cách khai báo chuỗi:

char str1[4] = {'L', '0', 'P'}; //khai báo và gán từng ký tự cho chuỗi str1 char str2[4] = "Lop"; /* ngôn ngữ C sẽ tự động ghi ký tự kết thúc là NULL, tức là ' \0' */ char str3[] = "Study"; //không cần khai báo kích thước

Xin lưu ý là bạn không thể làm như sau:

char S[5]; S="abc"; //sai, chương trình sẽ hiểu là gán mảng cho mảng vì chuỗi là mảng ký tự một chiều

Nhập liệu cho chuỗi

Sử dụng hàm gets() (thuộc thư viện <stdio.h>) được coi là cách thức đơn giản và phổ biến nhất để ta tiến hành nhập liệu cho chuỗi. Cú pháp sử dụng hàm này như sau: gets(Tên_chuỗi);

Ví dụ sau sẽ nhập liệu cho chuỗi a có kích thước tối đa là 30:

char a[30]; printf("\nMoi ban nhap mot chuoi: "); gets(a);

Ngoài ra, ta cũng có thể sử dụng hàm scanf() để nhập liệu cho chuỗi, khi đó ta sử dụng định dạng của chuỗi là %s. Lưu ý là scanf() không cho phép nhập chuỗi có dấu cách và do đó, khuyến nghị là không nên dùng hàm này để nhập chuỗi.

Chú ý: nếu trước khi nhập chuỗi ta đã nhập một số thì trong bộ đệm nhập liệu còn tồn tại ký tự Enter, khi đó ký tự này sẽ được đưa cho chuỗi dẫn đến không nhập liệu được. Để khắc phục điều này ta sử dụng lệnh sau đặt trước hàm gets(): fflush(stdin); . Ví dụ:

#include <stdio.h> main() { char a[30]; int n; printf("\nMoi nhap mot so: "); scanf("%d",&n); printf("\nMoi ban nhap mot chuoi: "); fflush(stdin); //<= ta cần sử dụng lệnh này // để đảm bảo bộ đệm nhập liệu không chứa // gì trước khi nhập chuỗi hoặc ký tự gets(a); return 0; }

Ví dụ về xử lý chuỗi

Viết chương trình chuyển đổi một chuỗi ký tự thường thành HOA. Dưới đây trình bày hai cách xử lý yêu cầu này.

* Cách 1: Dùng hàm toupper(ch) (thuộc thư viện <ctype.h>) để chuyển ký tự thường thành ký tự HOA. Chương trình được viết như sau:

#include<stdio.h> #include<ctype.h> #define n 20 main() { char s[n]; int i; printf("\nMoi nhap 1 chuoi bat ky: "); for ( i = 0 ; i < n ; i ++ ) s[i]=toupper(getchar()); //nhập ký tự và đổi thành hoa rồi lưu vào mảng kết xuất chuỗi s printf("\nChuoi sau khi duoc chuyen doi thanh chuoi in hoa:\n"); for(i=0; i<n; i++) putchar(s[i]); //in từng ký tự ra màn hình return 0; }

* Cách 2: Dùng hàm strupr(str) thuộc thư viện <string.h> để chuyển chuỗi str thành chuỗi in HOA. Chương trình được viết như sau:

#include<stdio.h> #include<string.h> main() { char str[30]; //khai báo một chuỗi có tối đa 30 ký tự do { printf("\nMoi ban nhap mot chuoi bat ky: "); gets(str); } while(strlen(str)==0 || strlen(str)>30); //yêu cầu nhập lại chuỗi khi kích thước bằng không hoặc vượt quá 30 strupr(str); //chuyển str thành chuỗi in hoa printf("\nChuoi sau khi chuyen: \"%s\"",str); return 0; }

Một ví dụ về kết quả chạy chương trình trên được thể hiện ở hình dưới đây:

Mảng chuỗi - demo hàm strupr()

» Tiếp: Mảng chuỗi « Trước: Mảng hai chiều Khóa học qua video: Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript Đăng ký Hội viên Tất cả các video dành cho hội viên Khóa học qua video: Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript Đăng ký Hội viên Tất cả các video dành cho hội viên Copied !!! Copy linkCopied link!
Bạn muốn tìm kiếm điều gì?

Từ khóa » Khai Báo String Trong C