Đấy là quy tắc của hàm scanf
, mình yêu cầu nhập vào như thế nào thì mình phải nhập vào đúng như vậy.
Tương tự như hàm printf
printf("%d^",3);
Thì cũng sẽ in số 3
và ^
Còn trong trường hợp scanf
thì mình xem phần format
của scan ở đây
http://www.cplusplus.com/reference/cstdio/scanf/
Whitespace character: the function will read and ignore any whitespace characters encountered before the next non-whitespace character
Hàm scanf sẽ đọc và bỏ bất cứ ký tự khoảng trắng nào, bao gồm space
và tab
hoặc enter
, cho tới khi gặp một ký tự khác với khoảng trắng.
Thế nên nếu ta code như sau:
#include <stdio.h>
int main()
{
int n;
scanf("%d ",&n);
printf("%d^", n);
}
Thì khi nhập vào có thể nhập
3a<enter>
Kết quả trả ra sẽ là
3^
Chữ a hoặc bất cứ ký tự nào khác khoảng trống đều bị bỏ đi.