30/09/2018, 16:58

Format của hàm scanf trong C?

Ai cho e biết là khi mình nhập hàm hàm scanf. VD

int n; 
scanf("%d ",&i);

sau %d em để 1 dấu cách thì sau khi cho chạy thì nó cũng bắt nhập 1 giá trị vào từ bàn phím nhưng
giá trị đấy lại k có tác dụng gì, Ai giải cho thích cho em hiểu cái đấy nó hoạt động như thế nào?

Nguyễn Minh Dũng viết 19:01 ngày 30/09/2018

Đấ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^


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 spacetab 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.

Hoan Sò viết 19:09 ngày 30/09/2018

vâng. thế thì e hiểu chứ e cứ phân vân mãi

Thành Phạm viết 19:07 ngày 30/09/2018

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.

Ở phần này kết quả trả ra vẫn phải là 3^ chứ ạ

Nguyễn Minh Dũng viết 19:04 ngày 30/09/2018

Đã sửa =)) tại code tay không chạy thử nên quên ^^

Bài liên quan
0