Eclipse: Hàm scanf chạy trước hàm printf mặc dù trong code ở sau

Mình mới C bằng eclipse for C
dev,

chạy nó chạy scanf trước, chạy printf sau, như màn hình console, Bạn nào biết cách sửa không?
cíu Mình với!

Eclipse ngộ thế.
Giải pháp mình search được:

Ngắn gọn là:
Thêm dòng này

setbuf(stdout, NULL);

Hoặc

setvbuf(stdout, NULL, _IONBF, 0);

Ở đầu hàm main

int main() {
  setvbuf(stdout, NULL, _IONBF, 0);
  ...
}
3 Likes

cảm ơn Bạn nhiều!!!

Không lẽ eclipse for C/C++ bị bug à?
Định xài eclipse code C++ :cold_sweat:

Ý kiến chủ quan:
Eclipse hình như nó xài console với config riêng của nó nên bị như trên (theo như vài link khác nói). Nên có thể tắt console buffer của nó đi là được \ OvO /. Cách tắt thì mình search không ra nên đưa cái trên :))
còn cách chỉnh size thì:
https://stackoverflow.com/questions/2600653/adjusting-eclipse-console-size

3 Likes

Theo mình vấn đề standard output là buffer, thay vì việc khi nào có chuỗi trong standard output thì cũng in ra thì nó chỉ in ra khi gặp kí tự xuống dòng ("\n"), bị đẩy ra (fflush(stdout)) hoặc chương trình kết thúc.
Bạn có thể thay sửa code như sau:

printf(" study n: ");`
fflush(stdout);`

Hoặc

printf(" study n: \n");

Hoặc set standard output không còn buffer nữa

setbuf(stdout, NULL);
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?