Tại Sao Cần Xóa Bộ đệm Bàn Phím Trước Khi Nhập Chuỗi?
Có thể bạn quan tâm
TRANG
- home
- lập trình
- tản mạn
- about
9/5/15
Tại sao cần xóa bộ đệm bàn phím trước khi nhập chuỗi?
Thông thường, khi nhập một chuỗi trong màn hình console, ta phải có thao tác xóa bộ nhớ đệm bàn phím. Nếu không có thể thấy rằng kết quả nhập chuỗi bị sai hoặc trôi đi mất. Trong quá trình chạy chương trình ta sẽ phải nhập bằng bàn phím, mọi ký tự bạn gõ vào bàn phím (kể cả ký tự Enter \n) đều được đẩy vào bộ nhớ đệm trước khi được gán vào biến. Nếu trước đó bạn có nhập số bằng scanf hoặc cin, chúng chỉ nhận số chứ không nhận được ký tự Enter, và ký tự Enter vẫn còn trong bộ nhớ đệm. Đến khi nhập chuỗi, các hàm nhập chuỗi nhận được ký tự Enter thì dừng nhập luôn và chương trình vẫn chạy tiếp. Điều này khiến kết quả bị sai. Bạn có thể sử dụng các hàm sau để thực hiện xóa bộ nhớ đệm. flushall() Hàm này được định nghĩa trong stdio.h. Nó có tác dụng xóa bộ nhớ đệm tất cả các dòng nhập, xuất chuẩn và nhập xuất file. fflush(stdin) Hàm fflush() trong thư viện stdio.h cũng có tác dụng tương tự flushall(). Tuy nhiên nó cho phép lựa chọn xóa bộ nhớ đệm cho stream nào. Ở đây ta truyền vào stdin để xóa bộ đệm cho dòng nhập chuẩn, tức là bàn phím. cin.ignore() Đây là một phương thức của đối tượng cin trong C++. Phương thức này còn có những tham số khác nghĩa là bỏ qua hay loại bỏ một số lượng ký tự trong bộ đệm hoặc bỏ qua đến khi gặp ký tự nào đó. Nếu không có tham số thì mặc định là bỏ 1 ký tự trong bộ đệm. Dùng cách này hữu ích khi nhập dữ liệu chuyển từ số sang chữ. Vậy nên dùng hàm nào? Hàm nào cũng được, flushall và fflush(stdin) có vẻ đơn giản hơn trong khi dùng cin.ignore() bạn phải cẩn thận, không lạm dụng để tránh sai ý muốn. Tags: C/Cpp, chuỗi, kiến thức14 nhận xét:
Unknown19:29 15/11/16e xài Visual Studio 2015. Xóa bộ nhớ đệm trong C e nên dùng hàm nào ạ.
Trả lờiXóaTrả lời- Trả lời
Nặc danh16:31 28/2/17fflush(stdin)
Trả lờiXóaTrả lời
tay19:35 17/5/19không đc
XóaTrả lời- Trả lời
Unknown16:35 27/10/19fflush(stdin) khonong sử dụng cho vs mới nữa
XóaTrả lời- Trả lời
Ngọc Danh14:03 7/3/20phải thêm thư viện #include vào nữa mới chạy được
XóaTrả lời- Trả lời
Trả lời
Để gió cuốn đi19:58 16/3/17Tuy nhiên nó cho phép lựa chọn xóa bộ nhớ đệm cho stream nào. Bạn cho mình hỏi là trong C có những stream nào?Cái này mình chưa rõ lắm !
Trả lờiXóaTrả lời- Trả lời
Unknown12:11 5/4/17trường hợp nào thì mình nên xóa bộ nhớ đệm, trường hợp nào thì không ạk
Trả lờiXóaTrả lời
Unknown23:07 30/7/19Nếu những gì còn xót lại trong bộ nhớ đệm không làm ảnh hưởng đến phần kết quả của các thành phần bên dưới chương trình thì bạn không cần phải xóa nhé!! Còn ngược lại, ví dụ nhé: #includeusing namespace std;int main(){ int a; double b; char ch; cin>>ch>>a>>b; cout<<"char : "<<ch<<endl; cout<<"a = "<<a<<endl; cout<<"b = "<<b<<endl; return 0;}Bài này bạn nhập thử a1,25,1.25 xem nha. Do biến ch chỉ lấy 1 kí tự mà lúc nhập vào là 2 kí tự(a1) nên số 1 sẽ được lưu vào bộ nhớ đệm rồi gán tiếp cho biến a (a=1); tiếp theo số 25 lại được gán cho biến b (b=25); rồi dữ liệu cuối cùng (1.25) được nhập vào sẽ không được in ra nữa.Nói chung bạn cân nhắc kiểu dữ liệu với đặc điểm của kiểu dữ liệu đó để cân nhắc xem có nên xóa bộ nhớ đệm không nhé!!!
XóaTrả lời- Trả lời
Unknown23:10 30/7/19sorry bạn, thư viện mình ghi thiếu rồi#include
XóaTrả lời- Trả lời
Nặc danh17:16 10/4/20vậy cách nào để cho nó in đúng vậy bạn
XóaTrả lời- Trả lời
Nặc danh17:18 10/4/20mình có thêm ignore vào sau chỗ cin>>ch thì sau khi xuất thì ch=a chớ ko phải ch=a1 @@
XóaTrả lời- Trả lời
Trả lời
Nặc danh20:51 13/10/18cho mình hỏi bộ nhớ đệm là gì ?????
Trả lờiXóaTrả lời
Nặc danh13:59 12/1/19bộ nhớ đệm là bộ nhớ lưu trữ tạm thời, giống như là xài cin.ignore() trong c++ để tránh bị lỗi thêm enter và chuỗi nhập trong chương trình để khi chạy sẽ đưa ra kết quả chính xác
XóaTrả lời- Trả lời
Trả lời
Nặc danh23:35 29/10/19cho mình hỏi tại sao nhập chuỗi kí tự nếu ko dùng cin.ignore(); thì bị nhảy dòng đầu tiên không cho nhập nhưng sao nhập chuỗi sô thì lại kong cần câu lệnh kia vẫn nhập bình thường ạ
Trả lờiXóaTrả lời- Trả lời
NỔI BẬT
[Visual Studio] Những mẹo sử dụng Visual Studio một cách hiệu quả
Visual Studio là một IDE rất mạnh mẽ của Microsoft, nó hỗ trợ rất nhiều tính năng từ cơ bản đến nâng cao. Nếu là lần đầu dùng Visual Studio ...
PHỔ BIẾN
- Cài đặt và sử dụng bộ gõ tiếng Nhật trên Windows 10
- Một số quy định viết code trong lập trình C#
- Hướng dẫn làm menu đơn giản trong màn hình Console
- Các hàm xử lý chuỗi trong C
- Cài đặt và thiết lập Java trên Windows
- Từ vựng về lập trình tiếng Nhật
- [Visual Studio] Những mẹo sử dụng Visual Studio một cách hiệu quả
- Cách vẽ lại cây nhị phân tìm kiếm từ kết quả duyệt
- Làm quen với MessageBox trong C#
- Một số thao tác cơ bản với cấu trúc Phân số
TAGS
C/Cpp kiến thức bài tập thủ thuật cấp phát động cấu trúc giải thuật mảng một chiều tiếng Nhật mảng hai chiều chuỗi con trỏ danh sách liên kết hướng đối tượng sắp xếp C# Pascal lập trình ma trận thao tác file Git Java Ruby Ruby on Rails cây nhị phân cây nhị phân tìm kiếm lập trình Windows FormTHEO DÕI TRÊN FACEBOOK
BÀI VIẾT
- ► 2017 (1)
- ► tháng 1 (1)
- ► 2016 (5)
- ► tháng 10 (3)
- ► tháng 9 (2)
Từ khóa » Bộ Nhớ đệm Stdin
-
Tại Sao Cần Xóa Bộ đệm Bàn Phím Trước Khi Nhập Chuỗi Trong C/C++?
-
Hỏi Về Câu Lệnh Fflush(stdin) Trong C - Programming - Dạy Nhau Học
-
Xóa Bộ Nhớ đệm Trong C - Programming - Dạy Nhau Học
-
C++: Cin.ignore() Thay Cho Fflush(stdin) - V1Study
-
[C++] Hỏi Về String Rất Rất Cơ Bản? - UIT - Forum
-
Hàm Fflush(stdin) Không Thể Dừng Màn Hình Console Trong C?
-
Lệnh Fflush(stdin) Dùng để Làm Gì? - Trắc Nghiệm Online
-
Làm Thế Nào để Xóa Bộ Nhớ đệm? - Cộng đồng C Việt
-
Fflush(stdin) Trong Ubuntu (linux)
-
Tại Sao Cần Xóa Bộ đệm Bàn Phím Trước Khi Nhập Chuỗi? - Nam đạik
-
Lệnh Fflush(stdin) Dùng để Làm Gì?
-
Lập Trình Hướng Đối Tượng C++ | Nguyen Minh Vuong Blog
-
Làm Thế Nào để Xóa Bộ đệm đầu Vào Trong C?
Unknown
Nặc danh
Ngọc Danh