01/10/2018, 13:55

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!

*grab popcorn* viết 15:57 ngày 01/10/2018

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

stackoverflow.com
quapka

C/C++ printf() before scanf() issue

c, printf, output, scanf
asked by quapka on 09:08PM - 01 Jun 13

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);
  ...
}
Shane Benjamin Bennett viết 16:00 ngày 01/10/2018

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

Phan Bá Hải viết 16:11 ngày 01/10/2018

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

*grab popcorn* viết 15:59 ngày 01/10/2018

Ý 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

Noob viết 16:03 ngày 01/10/2018

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);
Bài liên quan
0