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 ?
Hỏi về fflush(stdin)
Vui lòng đừng sử dụng hàm này
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.
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