
Nguyên bản được gửi bởi
nanosi
Within the control string, multiple character groups can be contiguous, or they can be separated by whitespace characters (i.e., blank spaces, tabs or newline characters).
If whitespace characters are used to separate multiple character groups in the control string, then all consecutive whitespace characters in the input data will be read but ignored. The use of blank spaces as character-group separators is very common.
*** Dịch:
+ "Trong chuỗi điều khiển, nhiều nhóm_ký_tự có thể đứng liền nhau hoặc có thể ngăn cách giữa chúng bằng các ký tự trắng ( đó là ký tự space, tab hoặc dấu xuống hàng ). Nếu sử dụng các ký tự trắng để phân cách nhiều nhóm_ký_tự trong chuỗi điều khiển, khi đó các ký tự trắng trong dữ liệu nhập vẫn được đọc nhưng chúng bị bỏ qua. Rất thường thấy việc dùng các ký tự trắng để phân cách như thế"
***Giải thích và minh họa:
Khi sử dụng hàm scanf, mẫu hàm là scanf( "chuỗi_điều_khiển", đối số 1, đối số 2, ... ) trong đó "từng đối số sẽ tương ứng theo thứ tự với từng nhóm_ký_tự_định_dạng cho nó trong chuỗi điều khiển".
Chẳng hạn scanf( " %d%ld %lf", &inguyen, &inguyenlon, &idouble ) thì nó có nghĩa: nhập vào 3 số, tương ứng, nhập số đầu tiên là số nguyên vào biến inguyen, số thứ 2 là số nguyên lớn và vào biến inguyenlon, số thứ 3 là số thực double và vào biến idouble. Dấu & là địa chỉ, &inguyen là địa chỉ của biến inguyen, nhập dữ liệu thì ta phải biết "nhập vào đâu?". Trong Vd trên thì "%d", "%ld", "%ld" là các nhóm_ký_tự_định_dạng ( Một số sách gọi chuỗi_điều_khiển là chuỗi các mã định dạng hoặc chuỗi định dạng hoặc chuỗi mã qui cách ( format code ))
Việc "bỏ qua các ký tự trắng" sẽ thấy rõ hơn qua vd: scanf("%d %c", &iint, &cChar ) ( giữa %d và %c có 1 khoảng trắng ), nếu bạn nhập thì các ký tự space trước số 150 bị bỏ qua và iint nhận giá trị 150; các ký tự space sau 150 và trước ký tự a bị bỏ qua và cChar nhận giá trị 'a'. Nếu ko có khoảng trắng phía trước trong " %c", biến cChar sẽ nhận được ký tự ' ' ( ký tự trắng )
Tại sao người ta lại dùng nhóm_ký_tự trong chuỗi điều khiển. Xem thêm 1 chút vd sau:
Code:
scanf("%3d %4d", &d, &n ); // nhập số nguyên d trong 3 chữ số, n trong 4 chữ số
Nhập: ____12345 ( dấu _ để thay cho ký tự space ) thì ta được d = 123, n = 45
Hàm scanf() còn nhiều điều cần giải thích thêm. Bạn cũng nên có một cuốn sách tiếng Việt đọc để hiểu rõ hơn + xem cụ thể ví dụ trong sách. Tuy nhiên, hãy cố gắng học tiếng Anh và ko phải sách tiếng Anh nào viết cũng hay cả; có nhiều cuốn rất "khoai" cả về nội dung và cách dùng tiếng Anh ).
Thân!