Cách nhập chuỗi có khoảng trắng trong C

Cùng tìm hiểu về cách nhập chuỗi trong C++. Bạn sẽ học được cách nhập 1 ký tự trong C++, nhập một chuỗi trong C++, nhập nhiều chuỗi trong C++, cũng như cách nhập chuỗi có khoảng trắng trong C++ sau bài học này.

Nhập 1 ký tự trong C++

Để nhập 1 ký tự trong C + +, tất cả chúng ta sử dụng lệnh cin trong C + + bằng cú pháp sau đây :

char a;
cin >> a;

Trong đó dòng đầu tiên dùng để khai báo biến a có kiểu ký tự, và dòng thứ 2 dùng để gán 1 ký tự nhập từ bàn phím vào biến a.

Bạn đang đọc: Nhập chuỗi trong C++

Ví dụ cụ thể:

using namespace std; int main() { cout << "Nhap 1 ky tu: "; char chr; cin >> chr; cout << "Ky tu vua nhap: "<< chr; return 0;}

Khi đó màn hình nhập dữ liệu sẽ như sau:

Nhap 1 ky tu: gKy tu vua nhap: g

Nhập vào một chuỗi trong C++

Để nhập vào một chuỗi trong C + +, tất cả chúng ta cũng sử dụng lệnh cin bằng cú pháp sau đây :

char str[n];
cin >> str

Trong đó dòng đầu tiên dùng để khai báo biến str có kiểu mảng chuỗi với độ dài n, và dòng thứ 2 dùng để gán 1 chuỗi nhập từ bàn phím vào biến str.

Ví dụ, chúng ta viết chương trình nhập vào một chuỗi ký tự C++ như sau:

using namespace std; int main() { cout << "Nhap chuoi ky tu: "; char str[100]; cin >> str;

cout <<"chuoi> return 0;}

Khi đó màn hình nhập dữ liệu sẽ như sau:

Nhap chuoi ky tu: abcChuoi ky tu vua nhap: abc

Nhập nhiều chuỗi trong C++

Để nhập nhiều chuỗi trong C++ cách nhau bởi dấu cách, chúng ta viết các chuỗi nhập vào cách nhau bởi toán tử >>, khi dùng lệnh cin với cú pháp sau đây:

char str1[n1], str1[n2], str3[n3];
cin >> str1 >> str2 >>str3 ;

Ví dụ, chúng ta viết chương trình nhập nhiều chuỗi trong C++ như sau:

using namespace std; int main(){ cout << "Nhap cac chuoi: "; char str1[16], str2[16], str3[16]; cin >> str1 >> str2 >>str3 ;

cout <<"cac>}

Khi đó màn hình nhập dữ liệu sẽ hiện ra. Chúng ta nhập từng chuỗi cách nhau bởi dấu cách từ bàn phím như sau:

Nhap cac chuoi: a bc defgCac chuoi vua nhap: a bc defg

Nhập chuỗi có khoảng trắng trong C++

Lệnh cin trong C + + chỉ có tính năng nhập những chuỗi không chứa khoảng chừng trắng. Trong trường hợp cần nhập chuỗi chứa khoảng chừng trắng tạo bởi dấu cách, tab hay ký tự xuống dòng, tất cả chúng ta sẽ dùng hàm fgets ( ) để thay thế sửa chữa .

Hàm fgets() là hàm được kế thừa từ ngôn ngữ C, vốn được sử dụng để đọc và lấy dữ liệu từ file trong C++, tuy nhiên chúng ta cũng có thể nhập chuỗi có khoảng trắng trong C++ bằng hàm này với cú pháp sau đây:

fgets ( str, sizeof ( str ) + 1, stdin ) ;Trong đó :

  • str là biến để chứa chuỗi cần nhập từ bàn phím
  • sizeof(str)+1 để chỉ định số ký tự lớn nhất có thể nhập bởi hàm fgets(). Ở đây hàm sizeof(str) sẽ trả về kích cỡ của chuỗi str, bao gồm cả ký tự kết thúc chuỗi \0, nên chúng ta cần cộng thêm 1 đơn vị vào.
  • stdin được sử dụng như là con trỏ file trong hàm fgets(). stdin là viết tắt của file header “iostream”, giúp chúng ta có thể nhận đầu vào tiêu chuẩn từ bàn phím.

Và sau đây là ví dụ nhập chuỗi có dấu cách trong C++:

using namespace std;int main(){ cout << "Nhap chuoi co ky tu trang: "; char str[10]; fgets(str, sizeof(str)+1, stdin); cout << "Chuoi vua nhap: "; cout << str; return 0;}

Xem thêm: Phẫu thuật, thủ thuật được phân thành những mức độ nào?

Khi đó màn hình nhập dữ liệu sẽ như sau:

Nhap chuoi co ky tu trang: Viet NamChuoi vua nhap: Viet Nam

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về nhập 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 với các ví dụ sau đây.

Và hãy cùng tìm hiểu và khám phá những kỹ năng và kiến thức sâu hơn về C + + trong những bài học kinh nghiệm tiếp theo nhé .

Source: https://ta-ogilvy.vn
Category: Thủ Thuật

Code c:

#include

#include

#define max 100

void DemKhoangTrang(char s[])

{

                                             int i,dem=0;

                                             for(i=0;i

                                             {

                                                if(s[i]==' ')

                                                {

                                                            dem++;

                                                }

                                             }

                                             printf("Chuoi co %d khoang trang.",dem);

}

int main()

{

                                             char s[max];

                                             printf("Nhap chuoi: ");

                                             gets(s);

                                             DemKhoangTrang(s);

}

Trong ngôn ngữ lập trình C không có kiểu dữ liệu chuỗi mà chuỗi trong C là một dãy các kí tự kiểu char. Một chuỗi trong C được đánh dấu kết thúc là ‘\0’ (còn gọi là ký tự NULL trong bảng mã ASCII) và có độ dài tùy ý, điều này cũng có nghĩa chuỗi ký tự trong C là một mảng các ký tự char.

Các Biến Chuỗi

  • Chuỗi là mảng ký tự kết thúc bởi ký tự null (‘\0’).
  • Có thể gán các hằng chuỗi cho các biến chuỗi.
  • Hằng chuỗi là một chuỗi các ký tự nằm trong dấu nháy kép.
  • Ký tự null ‘\0’ được tự động thêm vào biểu diễn bên trong của chuỗi.
  • Khi khai báo một biến chuỗi, hãy dành thêm một phần tử trống cho ký tự kết thúc.

Khai báo

Khai báo theo mảng

Cú pháp:

char [Chiều dài tối đa];

Ví dụ: Trong chương trình, ta có khai báo:

char Ten[12];

Trong khai báo này, bộ nhớ sẽ cung cấp 12+1 bytes để lưu trữ nội dung của chuỗi ký tự Ten; byte cuối cùng lưu trữ ký tự ‘\0’ để chấm dứt chuỗi.

Lưu ý:

  • Chiều dài tối đa của biến chuỗi là một hằng nguyên nằm trong khoảng từ 1 đến 255 bytes.
  • Chiều dài tối đa không nên khai báo thừa để tránh lãng phí bộ nhớ, nhưng cũng không nên khai báo thiếu.

Khai báo theo con trỏ Cú pháp

char *;

Ví dụ: Trong chương trình, ta có khai báo:

char *Ten;

Trong khai báo này, bộ nhớ sẽ dành 2 byte để lưu trữ địa chỉ của biến con trỏ Ten đang chỉ đến, chưa cung cấp nơi để lưu trữ dữ liệu. Muốn có chỗ để lưu trữ dữ liệu, ta phải gọi đến hàm malloc() hoặc calloc() có trong “alloc.h”, sau đó mới gán dữ liệu cho biến.

Vừa khai báo vừa gán giá trị

Cú pháp:  char []=<”Hằng chuỗi”>

Ví dụ:

#include #include void main() { char Chuoi[]="sinhvientot.net website chia se kien thuc" ; printf("Vua khai bao vua gan gia tri : %s",Chuoi) ; getch(); }

Lưu ý: Chuỗi được khai báo là một mảng các ký tự nên các thao tác trên mảng có thể áp dụng đối với chuỗi ký tự.

Không thể cộng, trừ, nhân, chia 2 chuỗi kí tự lại bằng phép toán đơn thuần. Tất cả những điều đó phải được làm bằng các hàm riêng lẽ. Ta có thể gán một chuỗi này bằng một chuỗi khác (strcpy), so sánh 2 chuỗi kí tự với nhau theo thứ tự từ điển (strcmp), cộng 2 chuỗi với nhau (strcat),…

Mọi hằng chuỗi đều được ngôn ngữ lập trình C lưu trữ như là một mảng các char và kết thúc bằng kí tự “\0”. Hơn nữa, một chuỗi trong chương trình chúng ta chỉ nhận được địa chỉ và chỉ đến đầu mảng lưu trữ. Việc truy xuất đến một hằng chuỗi đều được thực hiện qua một pointer chỉ đến mảng đó.

Hàm nhập xuất một chuỗi

Nhập chuỗi từ bàn phím

Để nhập một chuỗi ký tự từ bàn phím, ta sử dụng hàm gets()

Cú pháp:

gets();

Ví dụ:             char Ten[20]; 

gets(Ten);

Ta cũng có thể sử dụng hàm scanf() để nhập dữ liệu cho biến chuỗi, tuy nhiên lúc này ta chỉ có thể nhập được một chuỗi không có dấu khoảng trắng.

Ngoài ra, hàm cgets() (trong conio.h) cũng được sử dụng để nhập chuỗi.

#include #include void main() { char ten[50]; printf(“Nhap ten: ”); /*Không có chỉ thị & vì ten chuỗi đã là một địa chỉ*/ scanf("%s",ten); printf("Chao : %s\n",ten); getch(); }

Kết quả thực hiện chương trình:

Cách nhập chuỗi có khoảng trắng trong C

 Lưu ý: Nếu dùng hàm scanf() để nhập dữ liệu và kết thúc việc nhập dữ liệu bằng phím Enter, thì lúc này phím Enter sẽ cho hai kí tự có mã ASCII là 13 và 10 trong vùng đệm. Như vậy nếu dùng hàm scanf() thì kí tự có mã ASCII 10 vẫn còn nằm trong vùng đệm. Nếu ta dùng hàm gets(chuỗi s), kí tự có mã ASCII là 10 được chuyển ngay vào chuỗi s. Tức là hàm gets sẽ lấy tất cả các ký tự trong buffer (vùng đệm) của màn hình vô chuỗi cho nên đôi khi chúng ta sẽ nhận được chuỗi không mong muốn do gets nhận những ký tự dư của các hàm nhập khác. Để tránh điều này ta dùng hàm int flushall(void) để xóa mọi buffer (vùng đệm) hoặc hàm fflush(stdin) để xóa vùng đệm bàn phím trước hàm nhập chuỗi gets (chuỗi s).        

#include #include void main() { char ten[30]; printf(“Nhap ten: ”); flushall(); //hoặc dùng hàm fflush(studin); gets(ten); printf(“Chao :”); puts(ten); }

Kết quả thực thi của chương trình: 

Cách nhập chuỗi có khoảng trắng trong C

Nhập chuỗi kết thúc bằng phím Enter : char*gets(char*s);

Xuất chuỗi lên màn hình

Để xuất một chuỗi (biểu thức chuỗi) lên màn hình, ta sử dụng hàm puts().

Cú pháp:

puts();

Ví dụ: Nhập vào một chuỗi và hiển thị trên màn hình chuỗi vừa nhập.

#include #include #includeNgoài ra, ta có thể sử dụng hàm printf(), cputs() (trong conio.h) để hiển thị chuỗi lên màn hình.

Xuất một chuỗi có xuống dòng sau khi xuất:

int  put(const char*s); 

int printf(“%s\n”,s);

Xuất một chuỗi không xuống dòng sau khi xuất:

int printf(“%s”,s);        

int printf(s);