ậ ậ

ấ ấ

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