Hoạt động của hàm scanf()

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;

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()

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 345 sang dạng int do %d là format type cho int rồi gán cho a.
  • Chuyển Chuoi sang dạng char * do %s là format type cho string rồi gán cho s.

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 :smiley::smiley::smiley::smiley:

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