Các đặc tả chuyển dạng và tạo khuôn Các ký tự hiển thị khác hai loại trên... Đặc tả chuyển dạng và tạo khuôn %[-][fw][.pp]ky_tu_chuyen_dang Nếu có dấu trừ thì căn lề trái Nếu fw
Trang 1Bài giảng 3: Vào ra
Trang 3Hàm printf
int printf(const char* dk, [danh sách các đối]);
thành công
Các ký tự điều khiển: \n, \b, \t, v.v
Các đặc tả chuyển dạng và tạo khuôn
Các ký tự hiển thị (khác hai loại trên)
Trang 4Đặc tả chuyển dạng và tạo
khuôn
%[-][fw][.pp]ky_tu_chuyen_dang
Nếu có dấu trừ thì căn lề trái
Nếu fw bắt đầu bằng 0 và không có dấu trừ thì phần thừa được điền 0
fw là tổng độ rộng dành cho hiển thị
pp là độ chính xác sau dấu phảy của kiểu thực hoặc số ký tự của xâu được hiển thị
Trang 7Danh sách các đối
dạng
Đối có thể là hằng, biến, lời gọi hàm, biểu thức
Trang 8Các ví dụ xuất ra cơ bản
printf(“ABC”); ABC (con trỏ sau C)
printf(“%d\n”,5); 5 (con trỏ ở đầu dòng kế tiếp)
printf(“%c %c % c”,’A’,’B’,’C’); A B C
printf(“From sea ”); From sea to shining C printf(“to shining “);
printf (“C”);
printf(“From sea \n”); From sea
printf(“to shining \n“); to shining
Trang 9Hàm scanf
int scanf( const char* dk, [,danh_sach_cac_doi] );
Danh_sach_cac_doi: Các địa chỉ vùng nhớ cần nhập giá trị
%[*][d d]ky_tu_chuyen_dang
Đặc tả chứa dấu * không có đối tương ứng
D d là dẫy chữ số xác định độ dài cực đại của trường vào
Trang 10Dòng vào và trường vào
Dòng vào là một dãy ký tự liên tiếp nhau trên thiết bị vào
Ví dụ: sfsdf/n334/t d/n
Các giá trị trên dòng vào được gọi là trường vào
Ý nghĩa tham số dd d
Nếu không có d d hoặc tham số này lớn hơn độ dài
trường vào thì toàn bộ trường vào được đọc
Ngược lại, chỉ phần đầu của trường được đọc, dich và gán cho các tham số tương ứng Phần còn lại của trường sẽ được xem xét phụ thuộc các đặc tả kế tiếp.
Xem vd trang 80
Trang 11Ký tự chuyển dạng
đọc các ký tự trên dòng vào cũng như
phương pháp chuyển đổi thông tin rồi gán cho tham biến.
Trang 15Dòng vào stdin
scanf, gets và getchar đều nhận dữ liệu vào
Trái lại, máy sẽ tạm dừng để người dùng đưa
thêm dữ liệu từ bàn phím lên stdin (cho tới khi
nhấn Enter)
Trang 16Hàm fflush
Công dụng: gọi fflush(stdin) để xóa sạch
dòng vào stdin.
thao tác nhập dữ liệu trước đó.
Trang 17Hàm gets
char* gets( char* s );
Công dụng: Nhận dãy ký tự từ stdin cho tới khi
gặp ‘\n’ Ký tự ‘\n’ bị loại khỏi stdin nhưng không được đặt vào chuỗi s
Tham số: s là con trỏ kiểu char trỏ tới vùng nhớ
sẽ chứa dãy ký tự được nhập vào
Trả về: địa chỉ chuỗi nhận được
Trang 18Hàm getchar
Sinh viên tự đọc (trong sách hoặc trong Help của Turbo C)
Trang 19Các hàm xuất ký tự puts và
putchar
dữ liệu lên dòng ra chuẩn stdout (màn hình)
Sinh viên tự đọc về mô tả của các hàm này
Trang 20Các hàm vào ra trên bàn phím,
màn hình
Hàm getch()
Dạng hàm: int getch( void )
Công dụng: nhận một ký tự trong stdin và không hiển thị lên màn hình.
Trang 21Câu hỏi và bài tập
sử dụng gets thay vì scanf?
dụng fflush(stdin)?
dịch có phát hiện sai khi dịch không?