Hỏi về fflush(stdin)

cho em hỏi tại sao chỉ khi nhập số trước chuỗi sau mới phải dùng fflush(stdin) mà khi nhập chuỗi trước số sau thì không cần ?

Vui lòng đừng sử dụng hàm này :smiley:

Trả lời câu hỏi, thực ra scanf (số) với gets_s (chuỗi) hoạt động khác nhau. scanf sẽ đưa con trỏ lên token tiếp theo nếu nó ko trùng khớp định dạng, còn gets thì consume hết cho đến Enter.

4 Likes

tại sao không được sử dụng hàm này ạ?

Bạn nên làm như thế này chẳng hạn: while(getchar() != '\n');


Hoặc scanf("%d\n", &number);
P/s: cái này cũng là tào lao, nhưng vẫn sử lý được việc nhập chuỗi. :slight_smile:

2 Likes

Vì stdin đáng ra không có vụ đi flush, nhưng cái này trong chuẩn C/C++ không quy định rõ, nên mỗi compiler và sdk implement nó mỗi kiểu, hên xui được hoặc không.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?