Hướng dẫn dùng fflush stdin trong PHP
Hàm fflush() trong CHàm fflush() trong C được sử dụng để đẩy hết những ký tự có trong buffer ra stream. Sau khi gọi hàm fflush() thì buffer sẽ trống, đảm bảo việc nhập dữ liệu cho các biến sau an toàn. Để khai báo hàm fflush() trong C, ta sẽ cần sử dụng cú pháp như sau: int fflush(FILE *stream)Tham số:
Chú ý:
2. Ví dụ về hàm fflush() trong CVí dụ dưới đây, sử dụng hàm fflush() trong C để xoá bộ nhớ đệm đầu ra của stream, giúp cho việc nhập các ký tự vào chương trình C một cách an toàn như sau: #includeKết quả: Day la Laptrinhtudau. Vi du ve ham fflush(). Vi du nay su dung ngon ngu C. View Full Version : Cách dùng lệnh fflush(stdin)? Lệnh fflush(stdin) có tác dụng gì? dehin 13-09-2010, 02:56 PM Trong sách em viết: " Trc khi nhập dữ liệu kí tự hay xâu kí tự ta nên dùng lệnh" fflush(stdin) mp121209 13-09-2010, 05:24 PM stdin là dòng vào tiêu chuẩn(bàn phím). Các hàm scanf, gets, getchar ... đều nhận dữ liệu từ stdin. /* fflush
example */ int main() dehin 13-09-2010, 07:32 PM Mấy giải thích trên của anh khó hiểu quá. mp121209 13-09-2010, 09:35 PM Bạn hiểu nhầm rồi, không phải là gets(str) lấy giá trị của scanf(ch) đâu. ở đây mình giải thích cho bạn rõ như thế này. Nếu không dùng fflush(stdin) thì '\n' do lệnh scanf() để lại trên dòng nhập làm trôi dạt phương thức gets() như đã giải thích ở trên, vì thế str sẽ không nhận được giá trị nào hết! Giá trị s in ra ở dòng cuối là do lệnh printf() thực hiện, bạn có thể thay đổi lệnh printf trong chương trình kia thành thế này cho dễ hiểu nhé: printf ("\n\n%c\n%s", ch, str); Sayuri0903 13-09-2010, 09:55 PM Bạn cứ hiểu là fflush có tác dụng xóa buffer. sau khi gọi nó thì buffer sẽ trống, đảm bảo việc nhập dữ liệu cho các biến sau an toàn. dehin 13-09-2010, 10:06 PM Em hiểu thê này có đúng ko anh? Ở giải thích của anh em ko hiểu ở thuật ngữ " trôi dạt" và đoạn có chữ " trôi dạt " đó. Sayuri0903 13-09-2010, 10:10 PM Bạn nhớ rằng '\n' cũng là một ký tự. vậy nên nó cũng là một giá trị có thể lưu vào
biến. mp121209 14-09-2010, 03:57 AM Em hiểu thê này có đúng ko anh? Ở giải thích của anh em ko hiểu ở thuật ngữ " trôi dạt" và đoạn có chữ " trôi dạt " đó. zo.vn_si 04-01-2012, 07:27 AM Em hiểu thê này có đúng ko anh? Bạn đã hiểu rõ vấn đề rồi đấy. boss14420 04-01-2012, 09:56 AM theo chuẩn thì fflush chỉ dành cho output stream, dùng để đẩy hết những kí tự có trong buffer ra stream. VD fflush(stdout). http://diendan.congdongcviet.com/showthread.php?t=42732&page=2 nguyen tan cuong 04-01-2012, 11:32 AM Trong sách em viết: " Trc khi nhập dữ liệu kí tự hay xâu kí tự ta nên dùng lệnh"
fflush(stdin) cái hàm fflush() này hồi lúc mới học mình cũng mập mờ về nó lắm. Nhưng cố gắn tìm hiểu rồi mới vỡ lẽ ồ sao mà dễ thế. SolitaryWolf 16-09-2012, 06:04 PM Cho mình hỏi bộ đệm bàn phím và input stream là 1 hả? kingsleyfpt 05-11-2015, 02:23 AM Bạn hiểu nhầm rồi, không phải là gets(str) lấy giá trị của scanf(ch) đâu. ở đây mình giải thích cho bạn rõ như thế này. Nếu không dùng fflush(stdin) thì '\n' do lệnh scanf() để lại trên dòng nhập làm trôi dạt phương thức gets() như đã giải thích ở trên, vì thế str sẽ không nhận được giá trị nào hết! Giá trị s in ra ở dòng cuối là do lệnh printf() thực hiện, bạn có thể thay đổi lệnh printf trong chương trình kia thành thế này cho dễ hiểu nhé: printf ("\n\n%c\n%s", ch, str); Theo em hiểu thì đây là thừa kí tự enter của dòng scanf trước đó chứ đâu phải \n nhỉ daokimhoa 06-07-2021, 09:44 AM Tính ra hàm này cũng có chức năng dọn rác từ ứng dụng mà nhà mình tạo ra khi chạy nhỉ vBulletin® Version 4.2.2, Copyright © 2022 vBulletin Solutions, Inc. All rights reserved. Administer by Kevin Hoang |