ậ ậ
ấ ấ
Nh p và Xu t trong C Nh p và Xu t trong C
ươ
Ch
ng 4
Input and Output in C 1 / of 27
Input and Output in C
ụ ụ
ọ ủ ọ ủ M c tiêu c a bài h c M c tiêu c a bài h c
ể ậ
Tìm hi u các hàm đ nh d ng Nh p/Xu t ấ ạ ị scanf(), printf()
ử ụ ậ ự S d ng các hàm Nh p/Xu t ký t
Elementary Programming with C/Session 4/ 2 of 27
ấ getchar(), putchar()
ậ ậ
ẩ ấ ẩ ấ Nh p/Xu t chu n Nh p/Xu t chu n
ư ệ
cung c p các hàm ấ
ệ
ẩ ậ ẩ
ư ệ ệ
ậ
ự
ế ị ế ị
ườ ườ
ẩ ẩ
ậ ấ
t b nh p chu n th t b xu t chu n th
ng là bàn phím. ng là màn hình
Th vi n chu n trong C ấ ử x lý cho vi c nh p và xu t. Th vi n chu n có các hàm I/O, dùng đ ể ấ ả qu n lý vi c nh p, xu t, các thao tác trên ký t và chu i.ỗ Thi Thi (console).
ậ
ậ
Nh p và xu t có th đ
ể ượ ử c x lý qua các t p ẩ
ế ị
ừ
ấ các thi
t b chu n.
tin thay vì t
Elementary Programming with C/Session 4/ 3 of 27
ậ
ậT p tin Header
T p tin Header
#include
ề ử
ệ • Đây là câu l nh ti n x lý
ậ
stdio.h là t p tin header (header file) ử ụ Ch a các macro s d ng cho nhi u hàm
ề
Các macro trong stdio.h giúp các hàm printf(),
ứ ậ ấ nh p/xu t trong C
Elementary Programming with C/Session 4/ 4 of 27
ự scanf(), putchar(), getchar() th c thi
ấ ượ ị ấ ượ ị
ạ ạ
ậ ậ
Nh p/Xu t đ Nh p/Xu t đ
c đ nh d ng c đ nh d ng
ị ấ ạ
ậ
printf( ) – Dùng cho xu t có đ nh d ng ạ scanf( ) – S d ng đ nh p có đ nh d ng Các đ c t
ặ ả ị ứ ể ử ụ đ nh d ng
ị ủ ạ ậ ị ạ qui đ nh d ng th c ị ế ượ c nh p vào và
Elementary Programming with C/Session 4/ 5 of 27
mà theo đó giá tr c a bi n đ in ra
printf ( ) printf ( )
ị ữ ệ
ế
ấ
ị
ể Đ c dùng đ hi n th d li u ra thi
t b xu t
ượ ẩ
ư
ể chu n nh màn hình (console)
Cú pháp printf ( “control string”, argument list);
ứ
ẩ
ế Danh sách đ i s (argument list) ch a h ng, bi n, bi u th c ho c các hàm phân cách b i d u ph y
ị
ạ
ể ả
ằ ứ ở ấ control string”
Ph i có m t l nh đ nh d ng trong “
ạ
ớ
ố
ả Các l nh đ nh d ng ph i kh p v i danh sách đ i
ố ố ặ ộ ệ ỗ ố ố ị ệ ố ề ố ượ s v s l
.
cho m i đ i s trong danh sách ớ ứ ự ặ
ấ
ể control string luôn đ
ấ c đ t trong d u nh y kép “
Elementary Programming with C/Session 4/ 6 of 27
ng, ki u và th t ượ ấ ”, đây là d u phân cách
printf ( ) (tt.) printf ( ) (tt.)
ứ ể ầ ử
ộ control string ch a m t trong ba ki u ph n t sau:
ượ c
ừ
ự ự văn b nả : 1. Các ký t ể ự ồ có th in đ g m các ký t ạ : ị 2. Các l nh đ nh d ng ộ ệ b t đ u v i ký hi u % và theo sau là m t mã ầ ử ữ ệ ươ ứ d li u không in đ
Elementary Programming with C/Session 4/ 7 of 27
ệ ớ ắ ầ ạ ị ng ng cho t ng ph n t đ nh d ng t ượ : 3. Các ký t c ồ g m tab, blank và new_line
ạ ạ
ị ị
Mã đ nh d ng Mã đ nh d ng
ạ
ị
Đ nh d ng
scanf()
ự ơ
Ký t
đ n (single character)
printf() %c
%c
ỗ
Chu i (string)
%s
%s
ấ
ố
S nguyên có d u (signed decimal integer)
%d
%d
ấ
ấ
ạ
ậ
%f
ể Ki u float d ng d u ch m th p phân (decimal notation)
%f ho c ặ %e
ể
ấ
ạ
ậ
ấ Ki u float d ng d u ch m th p phân
%lf
%lf
ể
ạ
ừ Ki u float d ng lũy th a (exponential notation)
%f or %e
%e
ể
ắ
ơ
Ki u float ( %f hay %e , khi ng n h n)
%g
ấ
ố
S nguyên không d u (unsigned decimal integer)
%u
%u
ố
ử ụ
ệ
%x
%x
ấ S nguyên h 16 không d u s d ng “ABCDEF” (unsigned hexadecimal integer)
ệ
ố
ấ S nguyên h 8 không d u (unsigned octal integer)
%o
ả
Trong b ng trên : c, d, f, lf, e, g, u, s, o và x là các b đ c t
%o ộ ặ ả ể ki u
Elementary Programming with C/Session 4/ 8 of 27
ạ ạ
ị ị
Mã đ nh d ng (tt.) Mã đ nh d ng (tt.)
ướ
Các qui
c in
ố
ố
ị Mã đ nh d ngạ %d
Các con s trong s nguyên
ẽ ượ
%f
ữ ố ậ ậ
ữ ố ừ ố ừ
ẽ
%e
ủ ấ ả
ư
ở
ầ Các ch s ph n nguyên s đ c in ra. ữ ố ế ẽ ỉ ầ Ph n th p phân s ch in 6 ch s . N u ẽ ơ ầ ph n th p phân ít h n 6 ch s , nó s ả ữ ố ượ đ c thêm các ch s 0 vào t bên ph i, ượ ạ ả i nó s làm tròn s t ng bên ph i. c l ậ ấ ố ộ M t con s bên trái c a d u ch m th p ị trên phân và 6 v trí bên ph i, nh %f
Elementary Programming with C/Session 4/ 9 of 27
ạ ạ
ị ị
Mã đ nh d ng (tt.) Mã đ nh d ng (tt.)
ả
ể
ề
ỗ
L nhệ
ST T
Danh sách đ i số ố
ề
ể
ỗ Chu i đi u khi nể
ộ N i dung chu i đi u khi n
i thích Gi danh sách đ i số ố
ị Hi n th trên màn hình
printf(“%d”,300);
1.
300
H ngằ
300
%d
ị
ỉ ứ ệ Ch ch a l nh ạ đ nh d ng
ể
printf(“%d”,10+5);
2.
10 + 5
ứ Bi u th c
15
%d
ị
ỉ ứ ệ Ch ch a l nh ạ đ nh d ng
printf(“Good Morning Mr. Lee.”);
R ngỗ
R ngỗ
3.
Ch ch a các ký ả ự t
ỉ ứ văn b n
Good Morning Mr. Lee.
Good Morning Mr. Lee.
4.
count
Bi nế
100
%d
ị
int count = 100; printf(“%d”,count);
ỉ ứ ệ Ch ch a l nh ạ đ nh d ng
printf(“\nhello”);
5.
R ngỗ
R ngỗ
\nhello
c in và
hello on a new line
6.
%s
str
ị
ự ứ Ch a ký t ượ không đ ự các ký t văn b nả ỉ ứ ệ Ch ch a l nh ạ đ nh d ng
ằ H ng ký hi uệ
Good Apple
#define str “Good Apple “ …….. printf(“%s”,str);
7. ……..
%d %d
Hai bi nế
0 , 100
ạ
count, stud_num
ượ
ứ ệ Ch a l nh đ nh d ng và ký t không đ
ị ự c in
Elementary Programming with C/Session 4/ 10 of 27
int count,stud_num; count=0; stud_num=100; printf(“%d %d\n”,count, stud_num);
ự ặ ự ặ
Các ký t Các ký t
đ c bi đ c bi
ệ ệ t t
In ra ký t \\ In ra ký t \ “ %% In ra ký t
ự \ ự “ ự %
Elementary Programming with C/Session 4/ 11 of 27
ụ
ụVí d cho hàm printf() Ví d cho hàm printf()
ị ố
ể
ậ
ự
ng trình hi n th s nguyên, th p phân, ký t
Ch
ươ và chu iỗ
#include
void main()
{
int a = 10; float b = 24.67892345; char ch = ‘A’; printf(“Integer data = %d”, a); printf(“Float Data = %f”,b); printf(“Character = %c”,ch); printf(“This prints the string”); printf(“%s”,”This also prints a string”);
}
Elementary Programming with C/Session 4/ 12 of 27
ụ
ụVí d cho hàm printf() Ví d cho hàm printf()
ả ệ
ế
ở
K t qu hi n ra
màn hình là:
Integer data = 10 Float Data = 24.678923 Character = A This prints the string This also prints a string
Elementary Programming with C/Session 4/ 13 of 27
ổ ừ ổ ừB t B t
trong hàm printf( ) trong hàm printf( )
ầ ử ề c canh l trái, ph n t
v trí bên trái trong cùng
ườ
ổ ừ 1. B t ‘‘ ầ ử ữ ệ ẽ ượ d li u s đ Ph n t ắ ầ ừ ị ẽ ượ c in b t đ u t s đ ủ c a tr
ng.
ị
ườ
xác đ nh đ r ng tr
ng
ể ượ ử ụ
ộ ộ ớ
ườ ự
ể c s d ng v i ki u float, double ộ ộ ng là (chu i). Đ r ng tr ấ ỏ ộ ộ ị
ổ ừ 2. B t Có th đ ặ ỗ ả ho c m ng ký t ộ ố m t s nguyên xác đ nh đ r ng nh nh t cho ầ ử ữ ệ ph n t
Elementary Programming with C/Session 4/ 14 of 27
d li u.
ổ ừ ổ ừB t B t
trong hàm printf( ) (tt.) trong hàm printf( ) (tt.)
ặ
ả
ớ
ể ớ
ỗ
ố ượ
ớ
ự ỗ (chu i). N u dùng v i ki u float hay double, chu i con ấ ị ố ố ượ s xác đ nh s l c in bên ng l n nh t các con s đ ậ ấ ph i d u ch m th p phân.
ố
ẽ ượ ố
ả ườ
ộ c thêm vào m t ườ
ố
i dùng mu n thêm s 0 vào tr
ng
ượ
ế ng. N u ng ổ ừ ‘0’ đ
c dùng
này có th đ
ả ấ 4. B tổ ừ ‘0’ M c đ nh thì kho ng tr ng s đ ặ ị ườ tr thì b t 5. B tổ ừ ‘l’ B t ổ ừ ể
ể ạ
ị c dùng hi n th các đ i s nguyên ươ ứ
ị
ể ượ ki u int hay double. Mã đ nh d ng t
ố ố ng ng là %ld
Elementary Programming with C/Session 4/ 15 of 27
ộ 3. Đ chính xác Đ c s d ng v i ki u float, double ho c m ng ký t ượ ử ụ ể ế
ổ ừ ổ ừB t B t
trong hàm printf( ) (tt.) trong hàm printf( ) (tt.)
ổ ừ
‘h’
6. B t B t ổ ừ
ượ ử ụ này đ
ị ạ ư ạ ể ể c s d ng đ hi n th d ng ươ ứ ị ng ng nh là
short int. Mã đ nh d ng t %hd
ị
7. B tổ ừ ‘*’ ế ườ N u ng ư ườ ộ r ng tr ổ ừ ề ị đ nh đi u đó, b t
ộ ố i dùng không mu n xác đ nh đ ng nh ng mu n ch ng trình xác
Elementary Programming with C/Session 4/ 16 of 27
ố này đ ươ ượ ử ụ c s d ng
ụ ề ụ ề
ổ ừ ổ ừ
Ví d v các b t Ví d v các b t
/* This program demonstrate the use of Modifiers in printf() */
#include
void main(){
printf(“The number 555 in various forms:\n”); printf(“Without any modifier: \n”); printf(“[%d]\n”,555); printf(“With – modifier :\n”); printf(“[%-d]\n”,555); printf(“With digit string 10 as modifier :\n”); printf(“[%10d]\n”,555); printf(“With 0 as modifier : \n”); printf(“[%0d]\n”,555); printf(“With 0 and digit string 10 as modifiers :\n”); printf(“[%010d]\n”,555); printf(“With -,0 and digit string 10 as modifiers:\n”); printf(“[%-010d]\n”,555);
}
Elementary Programming with C/Session 4/ 17 of 27
ụ ề ụ ề
ổ ừ ổ ừ
Ví d v các b t Ví d v các b t
ả ệ
ế
K t qu hi n ra màn hình:
Elementary Programming with C/Session 4/ 18 of 27
scanf( ) scanf( )
ượ ử ụ ổ ạ
ể ậ ữ ệ Đ c s d ng đ nh p d li u ủ D ng t ng quát c a hàm scanf() scanf(“control string”, argument list);
ị
ữ
Nh ng đ nh d ng dùng trong hàm
ớ
c s d ng v i cùng
ạ ượ ử ụ printf() cũng đ cú pháp trong hàm scanf()
Elementary Programming with C/Session 4/ 19 of 27
ề ề
ố ố ự ố ố ự S khác nhau v danh sách đ i s S khác nhau v danh sách đ i s ữ ữgi a printf( ) và scanf( ) gi a printf( ) và scanf( )
ằ ằ ế ể ử ụ
printf() s d ng các tên bi n, h ng, h ng bi u ứ
ể ượ t
ỏ ớ
ắ
Đ c giá tr vào m t bi n có ki u d li u d n xu t,
ọ ụ d ng ký hi u ọ ẫ ấ ị
Elementary Programming with C/Session 4/ 20 of 27
ng và các bi u th c ử ụ ế scanf() s d ng các con tr t i bi n ả ố ố Danh sách đ i s trong scanf() ph i theo qui t c : ể ữ ệ ơ ở ử ế ị Đ c giá tr vào m t bi n có ki u d li u c s , s ế c tên bi n ể ữ ệ ế ế ướ c tên bi n không s d ng ộ ướ ệ & tr ộ ử ụ & tr
ạ ị ệ ề các l nh đ nh d ng ự ị ệ ạ ề ự các l nh đ nh d ng S khác nhau v S khác nhau v ữ ữgi a printf( ) và scanf( ) gi a printf( ) và scanf( )
ỳ ọ
ố
ị
Không có tu ch n %g ạ Mã đ nh d ng %f và %e là gi ng nhau
Elementary Programming with C/Session 4/ 21 of 27
ụ ớ ụ ớ
Ví d v i hàm scanf( ) Ví d v i hàm scanf( )
#include
void main(){
int a; float d; char ch, name[40]; printf(“Please enter the data\n”); scanf(“%d %f %c %s”,&a,&d,&ch,name); printf(“\n The values accepted are: %d,%f,%c,%s”,a, d,ch,name);
}
Elementary Programming with C/Session 4/ 22 of 27
ệ ệ
ậ ậ
ấ ấ Vùng đ m Nh p/Xu t Vùng đ m Nh p/Xu t
ượ ử ụ
ể ọ
ế
ự
Đ c s d ng đ đ c và vi
t các ký t
ASCII ộ
ệ
M t vùng đ m (buffer) là m t không gian
ộ ớ
ộ
ặ
ể
ờ ế ị t b ấ B đ m Nh p/Xu t có th chia làm :
ẻ ữ ạ ư l u tr t m th i trong b nh ho c trên th ề ể đi u khi n thi ậ ộ ệ Console I/O Buffered File I/O
Elementary Programming with C/Session 4/ 23 of 27
Console I/O Console I/O
ế ị
ế
ấ
đ n thi
ả
ể Các hàm Console I/O chuy n các thao tác ẩ ủ ệ ố ậ t b xu t nh p chu n c a h th ng ấ ơ Trong ‘C’ các hàm console I/O đ n gi n nh t
là: getchar( ) đ c m t và ch m t ký t
ỉ ộ ộ ọ ự ừ t bàn
phím
putchar( ) xu t m t ký t
Elementary Programming with C/Session 4/ 24 of 27
ấ ộ ự lên màn hình
getchar( ) getchar( )
ọ ữ ệ
ậ
ộ
Dùng đ c d li u nh p, m t ký t
ự ừ t
bàn
ự ặ
ệ
ế
đ t trong vùng đ m đ n khi
phím Các ký t ườ
ng
i dùng gõ phím enter
ư
Hàm getchar( ) không có đ i s , nh ng ấ
ả
ẫ
ố ố ặ ặ v n ph i có c p d u ngo c ( )
Elementary Programming with C/Session 4/ 25 of 27
ụ
ụVí d hàm getchar() Ví d hàm getchar()
/*Program to demonstrate the use of getchar()*/
#include
void main()
{
char letter; printf(“\nPlease enter any character:“); letter = getchar(); printf(“\nThe character entered by you
is %c“, letter); }
Elementary Programming with C/Session 4/ 26 of 27
putchar( ) putchar( )
ấ
ự
trong ‘C’
Hàm xu t ký t ộ ố ố Có m t đ i s
ộ
ể Đ i s c a m t hàm putchar( ) có th
ố ố ủ là :
đ n
ị
ộ ằ ộ ộ
ự ơ M t h ng ký t ạ M t mã đ nh d ng ự ế M t bi n ký t
Elementary Programming with C/Session 4/ 27 of 27
ủ ủ
Các tùy ch n ọ Các tùy ch n ọ ứ ứ và ch c năng c a putchar( ) và ch c năng c a putchar( )
Hàm
ế Tham số Biến ký tự putchar(c)
cự
H ng ký t
ứ Ch c năng ị ộ ể Hi n th n i dung bi n ký t ằ ự ằ A
putchar(‘5’)
putchar(‘\t’)
ố ằ ố
ả kho ng
ự putchar(‘A’) H ng ký t H ng s 5 ự Chèn ký t tr ngắ
putchar(‘\n’) Chèn ký t
ự ố xu ng dòng
Elementary Programming with C/Session 4/ 28 of 27
ằ H ng s ị Mã đ nh d ngạ ị Mã đ nh d ngạ
putchar( ) putchar( )
/* This program demonstrates the use of
constants and escape sequences in
putchar()*/
#include
void main(){
putchar(‘H’); putchar(‘\n’); putchar(‘\t’); putchar(‘E’); putchar(‘\n’);
Ví dụ
putchar(‘\t’); putchar(‘\t’); putchar(‘L’); putchar(‘\n’); putchar(‘\t’); putchar(‘\t’); putchar(‘\t’); putchar(‘L’); putchar(‘\n’); putchar(‘\t’); putchar(‘\t’); putchar(‘\t’); putchar(‘\t’); putchar(‘O’);
}
Elementary Programming with C/Session 4/ 29 of 27