Nhập chuỗi ký tự C++

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 ] đượ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 

main[] {

  char a[30];
  int n;

  printf["\nMoi nhap mot so: "];
  scanf["%d",&n];

  printf["\nMoi ban nhap mot chuoi: "];
  fflush[stdin]; //

Chủ Đề