anh chị cho em hỏi về hoạt động của hàm scanf() trong trường hợp này., khi để 1 dấu cách sau "%d "
scanf("%d ", &x) : nhâp 2 số thì số đầu tiên mới được chuyển vào biến x;
scanf("%d", &x): lập tức giá trị nhập với được chuyển vào biến x;
Hoạt động của hàm scanf()
Bạn thử không nhập 2 số mà nhập 1 số rồi thêm 1 dấu cách xem có được không?
vẫn thế thôi, hàm scanf() không nhận ký tự cách
Prototype của hàm scanf() là
int scanf(const char *format, ...);
-
Nghĩa là nó sẽ lấy một chuỗi có định dạng sẵn từ stream (stdin). Và trong mỗi định dạng của nó được nhận vào thì nó sẽ xác định type rồi truyền lại cho các argument bên phải.
-
Mỗi format type thì hàm
scanf()nó được định nghĩa sẵn là cách nhau bởi khoảng trắng.
VD: scanf("%d %s", a, s);
- Nó sẽ lấy từ stream một chuỗi có dạng như trên (
"%d %s") - Khiểu như
"345 Chuoi" - Và nó chuyển
345sang dạngintdo%dlà format type chointrồi gán choa. - Chuyển
Chuoisang dạngchar *do%slà format type cho string rồi gán chos.
Nói về vấn để của bạn.
scanf("%d ", &x);
Bạn để dấu cách đấy thì scanf() nó sẽ hiểu là vẫn còn một đối số nữa phải lấy và thế là nó vẫn đợi cho đến khi bạn nhập đủ thì thôi.
6 Likes
giờ đã hiểu. cảm ơn sếp 



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