Từ 1 tới 10 trên tổng số 10 kết quả

Đề tài: về cách sử dụng hàm fflush

  1. #1
    Ngày gia nhập
    12 2014
    Bài viết
    4

    Mặc định về cách sử dụng hàm fflush

    như tiêu đề thì cho hỏi cách sử dụng hàm fflush để xóa bỏ kí tự Enter
    P/s: mình sử dụng CB, compiler là GNU GCC Compiler

  2. #2
    Ngày gia nhập
    11 2010
    Bài viết
    589

    Trích dẫn Nguyên bản được gửi bởi funfact Xem bài viết
    như tiêu đề thì cho hỏi cách sử dụng hàm fflush để xóa bỏ kí tự Enter
    P/s: mình sử dụng CB, compiler là GNU GCC Compiler

    Hàm fflush không có chức năng này.

  3. #3
    Ngày gia nhập
    12 2014
    Bài viết
    4

    vậy cho mình biết cách sử dụng nó được không?
    và tiện thì cho biết tại sao codeblock không cho ghi thế này nhỉ
    Code:
    void main()

  4. #4
    Ngày gia nhập
    01 2013
    Bài viết
    1,479

    ^ Vì sai chuẩn.

    http://www.cplusplus.com/reference/cstdio/fflush/
    If the given stream was open for writing (or if it was open for updating and the last i/o operation was an output operation) any unwritten data in its output buffer is written to the file.

    If stream is a null pointer, all such streams are flushed.

    In all other cases, the behavior depends on the specific library implementation. In some implementations, flushing a stream open for reading causes its input buffer to be cleared (but this is not portable expected behavior).
    Đã được chỉnh sửa lần cuối bởi prog10 : 28-12-2014 lúc 07:47 PM.

  5. #5
    Ngày gia nhập
    07 2011
    Nơi ở
    Hà Nội
    Bài viết
    24

    Theo mình thì để hiểu được fflush thì bạn cần hiểu về stream là gì, buffer là gì, tại sao lại dùng buffer, khi gọi fflush thì việc gì sẽ xảy ra.
    KISS

    Skype: giapnguyen_bka89

  6. #6
    Ngày gia nhập
    10 2014
    Bài viết
    373

    Mặc định về cách sử dụng hàm fflush

    Thử dán đoạn code này vào và chạy 2 lần:
    Lần thứ 2 thì bỏ dòng fflush(stdin); xem sao

    C Code:
    1. #include "stdio.h"
    2. #include <conio.h>
    3.  
    4. int main()
    5. {
    6.     char ten[50];
    7.     char dia_chi[50];
    8.     int tuoi = 0;
    9.  
    10.     printf("Nhap tuoi: ");
    11.     scanf("%d", &tuoi);
    12.     printf("Tuoi: %d\n", tuoi);
    13.  
    14.     fflush(stdin); // <<== Đây
    15.  
    16.     printf("Nhap ten: ");
    17.     gets(ten);
    18.     printf("Ten: %s\n", ten);
    19.  
    20.     printf("Nhap dia chi: ");
    21.     gets(dia_chi);
    22.     printf("Dia chi: %s", dia_chi);
    23.    
    24.     getch();
    25.     return 0;
    26. }
    Stay hungry. Stay foolish.
    Design is not just what it looks like and feels like. Design is how it works.

  7. #7
    Ngày gia nhập
    01 2013
    Nơi ở
    Quảng Ngãi
    Bài viết
    27

    Trích dẫn Nguyên bản được gửi bởi funfact Xem bài viết
    như tiêu đề thì cho hỏi cách sử dụng hàm fflush để xóa bỏ kí tự Enter
    P/s: mình sử dụng CB, compiler là GNU GCC Compiler
    THeo cách hiểu nông cạn máy móc của mình, fflush dùng để làm sạch bộ đệm stdin.
    Mỗi lần nhập giá trị, kí tự enter sẽ k0 đc dưa vào biến,... mà sẽ còn dư lại trong stdin, dùng fflush(stdin); để làm sạch nó

  8. #8
    Ngày gia nhập
    01 2013
    Bài viết
    1,479

    Trích dẫn Nguyên bản được gửi bởi aboq Xem bài viết
    THeo cách hiểu nông cạn máy móc của mình, fflush dùng để làm sạch bộ đệm stdin.
    Mỗi lần nhập giá trị, kí tự enter sẽ k0 đc dưa vào biến,... mà sẽ còn dư lại trong stdin, dùng fflush(stdin); để làm sạch nó
    fflush chỉ để tạm dùng thôi
    Chứ ko phải best practice ^^

  9. #9
    Ngày gia nhập
    11 2010
    Bài viết
    589

    Trích dẫn Nguyên bản được gửi bởi aboq Xem bài viết
    THeo cách hiểu nông cạn máy móc của mình, fflush dùng để làm sạch bộ đệm stdin.
    Mỗi lần nhập giá trị, kí tự enter sẽ k0 đc dưa vào biến,... mà sẽ còn dư lại trong stdin, dùng fflush(stdin); để làm sạch nó
    Sai hoàn toàn.
    Hàm fflush dùng dùng để "đẩy" tất cả những gì còn có trong output buffer vào file hoặc thiết bị được ghi.
    Với đầu vào là stdin (1 input stream) thì là undefined behavior.

  10. #10
    Ngày gia nhập
    12 2014
    Bài viết
    4

    Trích dẫn Nguyên bản được gửi bởi prog10 Xem bài viết
    ^ Vì sai chuẩn.

    http://www.cplusplus.com/reference/cstdio/fflush/
    vậy làm sao để đúng chuẩn!

    - - - Nội dung đã được cập nhật ngày 30-12-2014 lúc 07:25 AM - - -

    Trích dẫn Nguyên bản được gửi bởi villbe Xem bài viết
    Thử dán đoạn code này vào và chạy 2 lần:
    Lần thứ 2 thì bỏ dòng fflush(stdin); xem sao

    C Code:
    1. #include "stdio.h"
    2. #include <conio.h>
    3.  
    4. int main()
    5. {
    6.     char ten[50];
    7.     char dia_chi[50];
    8.     int tuoi = 0;
    9.  
    10.     printf("Nhap tuoi: ");
    11.     scanf("%d", &tuoi);
    12.     printf("Tuoi: %d\n", tuoi);
    13.  
    14.     fflush(stdin); // <<== Đây
    15.  
    16.     printf("Nhap ten: ");
    17.     gets(ten);
    18.     printf("Ten: %s\n", ten);
    19.  
    20.     printf("Nhap dia chi: ");
    21.     gets(dia_chi);
    22.     printf("Dia chi: %s", dia_chi);
    23.    
    24.     getch();
    25.     return 0;
    26. }
    C++ mà bạn ơi __

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn