Tậ ti Nhị hâTậ ti Nhị hâ
Tậ
p
ti
n
Nhị
p
hâ
n
Tậ
p
ti
n
Nhị
p
hâ
n
CáCá
hếhế
độđộ
ởở
tậtậ
titi
hịhị
hâhâ
Cá
c
Cá
cc
hế
titi
ũũ
h ặh ặ
tt
ớiới
ếế
tậtậ
“
w
b”“
w
b”
::g
hi
g
hi
(
g
hi(
g
hi
đèđè
lê
n
lê
n
tậ
p
tậ
tậ
p
tintin khôngkhông cócó trêntrên đĩa)đĩa)
“
ab
”“
ab
”
::
ghighi
nốinối
vàovào
cuốicuối
tậptập
tintin
abab
::
ghighi
nốinối
vàovào
cuốicuối
tậptập
tintin
“rb+”“rb+” :: đọc/ghiđọc/ghi TậpTập tintin phảiphảicócó trêntrên đĩađĩa
“b+”“b+”
::
đĩađĩa
tậptập
tintin
chưachưa
cócó
trêntrên
đĩađĩa
Đ hi tậ ti Nhị hâĐ hi tậ ti Nhị hâ
Đ
ọc g
hi
tậ
p
ti
n
Nhị
p
hâ
n
Đ
ọc g
hi
tậ
p
ti
n
Nhị
ịị
freadfread trảtrả vềvề sốsố khốikhốidữdữ liệuliệu đọcđọc đượcđược
NếuNếucócó lỗilỗihoặchoặcEOF EOF thìthì giágiá trịtrị trảtrả vềvề nhỏnhỏ hơnhơnNumItemNumItem
fwritefwrite() : () : ghighi
itit
fitfit
(tid*(tid*
PtPt
itit
It SiIt Si
s
i
ze_
t
s
i
ze_
t
f
wr
it
e
f
wr
it
e
(
cons
t
vo
ChépChép
33
mụcmục
từtừ
tậptập
tintin
filenamefilename
vàovào
vùngvùng
nhớnhớ
trỏtrỏ
bởibởi
ptrptr
ChépChép
33
mụcmục
từtừ
tậptập
tintin
filenamefilename
vàovào
vùngvùng
nhớnhớ
trỏtrỏ
bởibởi
ptrptr
ptrptr
fpfpÆÆfilenamefilename
tậ
p
ti
n
ti
nsausau
khikhi
m
ở
m
ở
đ
ược
đ
ượcqu
ả
nqu
ả
n
lýlý
thô
ng
thô
ng quaqua m
ột
m
ột
concon
t
r
đọcđọc
đượcđược
fseekfseek
(),(),
fseekfseek
(),
(),
CácCác hằnghằng dùngdùng trongtrong didi chuyểnchuyển con con trỏtrỏ FILEFILE
#define#define
SEEK SETSEEK SET
00
#define#define
SEEK
_
SETSEEK
_
SET
00
#define #define SEEK_CURSEEK_CUR 11
#define #define SEEK_ENDSEEK_END 22
intint fseekfseek( FILE *( FILE *fpfp, long , long intint offset, offset, intint whence );whence );
fseekfseek didi chuyểnchuyển con con trỏtrỏ fpfp đếnđếnvịvị trítrí offset offset theotheo mốcmốc whence whence
offset: offset: khoảngkhoảng cáchcách (byte) (byte) cầncầndidi chuyểnchuyển tínhtính từtừ vịvị trítrí hiệnhiệntạitại. .
ềề
ốố
ềề
ầầ
whence:whence:
SEEK
_
SET:
SEEK
_
SET:
tínhtính
từtừ
đầuđầu
tậptập
tintin
SEEK_CUR: SEEK_CUR: tínhtính từtừ vịvị trítrí hiệnhiệnhànhhành củacủa con con trỏtrỏ
SEEK_END: SEEK_END: tínhtính từtừ cuốicuốitậptập tintin
fseekfseek trảtrả vềvề: 0 : 0 nếunếu thànhthành côngcông, <>0 , <>0 nếunếudidi chuyểnchuyểncócó lỗilỗi
ft llft ll
()()
àà
id()id()
ft
e
llft
e
ll
()
()
v
đặtđặt
l
ạ
il
ạ
i
v
ị
v
ị
t
r
ít
r
í
con con
t
r
ỏt
r
ỏ
v
ề
v
ề
đầ
u
đầ
u
tậ
););
tươngtương đươngđương vớivới fseekfseek ( ( fpfp, 0L, SEEK_SET);, 0L, SEEK_SET);
ftellftell trảtrả vềvề vịvị trítrí offset offset hiệnhiệntạitạicủacủa con con trỏtrỏ
long long intint ftellftell ( FILE * ( FILE * fpfp ););
NếuNếucócó lỗilỗi, , ftellftell trảtrả vềvề 1L1L
Ví dVí d
á đị hkí h h ớ ậ iá đị hkí h h ớ ậ i
Ví
d
ụ:
Ví
d
ụ: x
á
c
đị
n
h
kí
c
h
t
h
ư
ớ
c t
ậ
//
kh
a
ikh
a
i
bá
o
bá
o
biế
n
biế
nc
N
nc
N
n
thậ
n
thậ
n
if (if (
ff
ff
((
Fil NFil N
““
bb
“
,
“
r
b
r
b
”
)
)
==
N ULL
)”
)
)
==
N ULL
)
2.2. fprintffprintf( ( stderrstderr, “Cannot open %s, “Cannot open %s\\n”, n”, FileN ameFileN ame ););
ll
3.3. e
l
see
l
p
rintf
p
rintf( “File size : %d bytes( “File size : %d bytes
\\
n “, n “, FileSizeFileSize ););
8.8. fclosefclose( ( fpfp ););
9.9. }}
V
ị
V
ị
tr
í
tr
í
con con trỏtrỏ: : f
g
et
p
osf
g
et
p
os
()
()
vàvà
ịị
p
ti
n
ThTh
hiệhiệ
áá
Th
ực
Th
ực
hiệ
n
hiệ
nxo
á
xo
á
intint
remove(const char
*
filename);remove(const char
*
filename);
intint
remove(const
char
filename);remove(const
tậ
p
ti
n
Chú
ý
khi
là
m v
iệ
c v
ới
tậ
p
ti
n
KhiKhi
ởở
tậtậ
ti filti fil
tậtậ
titi
àà
hảihải
ằằ
à
y
phảiphải
n
ằ
mn
ằ
mc
ù
ngc
ù
ng
thưthư
mụcmụccủacủachươngchương trìnhtrình hoặchoặc
phảiphải cungcung cấpcấp đầyđầy đủđủ đườngđường dẫndẫn đếnđếntậptập tintin
vdvd: C:: C:\\baitapbaitap\\taptin.dattaptin.dat
viếtviếtnhưnhư thếthế nàonào? ?
fpfp = = fopenfopen( “C:( “C:\\baitapbaitap\\taptin.dat”, “taptin.dat”, “rbrb” );” );
SAI RỒISAI RỒI
ìì
óó
kýký
tt
đặđặ
biệtbiệt
‘‘
\\
’’
êê
iếtiết
iết
đú
ng
đú
ng s
ẽ
s
ẽ
làlà
::
fpfp = = fopenfopen( “C:( “C:\\\\baitapbaitap\\\\taptin.dat”, “taptin.dat”, “rbrb” );” );
ThamTham
sốsố
dòngdòng
lệnhlệnh
chươngchương
trìnhtrình
ThamTham
sốsố
dòngdòng
lệnhlệnh
chươngchương
trìnhtrình
KhiKhi gọigọichạychạymộtmộtchươngchương trìnhtrình, , chúngchúng tata cócó thểthể cungcung cấpcấp cáccác
ốố
thamtham s
ố
s
ố
tạitại dòngdòng lệnhlệnh gọigọichươngchương trìnhtrình
,
A:
\\
*
.
c
*
.
c
vàvà
/w
/w
làlà
haihai
thamtham
sốsố
điềuđiều
khiểnkhiển
chươngchương
trìnhtrình
commandcommand
line argumentsline arguments
commandcommand
char * ar
g
var
g
v
[
]
)[
]
)
((
gg
,,
gg
[])[])
{ }{ }
argcargc: argument coun
t
: argument coun
t
argvargv: argument vector: argument vector
Th ố dò lệ hTh ố dò lệ h
ídíd
Th
am s
ố
{{
2.2.
{{
3.3. intint res = 0;res = 0;
44
printfprintf
(
“
Program %s(
“
Program %s
\\
n
“
n
“
argvargv
[0]);[0]);
4
.
4
.
printfprintf
(
Program
%s(
Program
+
atoiatoi
((
argcargc
[[
ii
]);]);
7.7. printfprintf (“ %d(“ %d\\n”, res );n”, res );
88
}}
8
.
8
.
}}
G:G:
\\
>>
addintaddint
33
21562156
2121
G:G:
\\
>>
addintaddint
RR
ecursionecursion
ĐệĐệ
quyquy
RR
ecursionecursion
Phạm Thế Bảo
Trường Đạihọc Khoa họcTự nhiên Tp HCM
Trường
Đại
học
Khoa
học
Tự
nhiên
Tp
.
HCM
Thu
ậ
t toán đ
ệ
bàibài
toántoán
bằngbằng
đệđệ
quyquy
làlà
đưađưa
bàibài
toántoán
hiệnhiệntạitạivềvề mộtmộtbàibài toántoán cùngcùng loại,loại, cùngcùng tínhtính chấtchất
(đồng(đồng
dạng)dạng)
nhưngnhưng
ởở
cấpcấp
độđộ
thấpthấp
hơnhơn
quáquá
trìnhtrình
nàynày
(đồng(đồng
dạng)dạng)
nhưngnhưng
ởở
cấpcấp
độđộ
thấpthấp
hơnhơn
,,
tata
lầnlần
ngượcngược
đểđể giảigiải cáccác bàibài toántoán ởở cấpcấp độđộ caocao hơnhơnchocho đếnđếnkhikhi giảigiải
xongxong
bàibài
toántoán
banban
đầuđầu
xongxong
bàibài
toántoán
banban
đầuđầu
VíVí dụdụ::
địnhđịnh nghĩanghĩagiaigiai thừathừa:: n!=n*(nn!=n*(n 11)!)! vớivới00!=!=11
DãyDãy FibonacciFibonacci::ff
00
==11,, ff
11
==11vàvà ff
nn
=f=f
nn 11
+f+f
nn 22
∀∀n>n>11
ếế
DanhDanh sáchsách liênliên k
Nế
u
Nế
uthuậtthuật toántoán đệđệ
q
u
yq
u
y
khôn
g
khôn
g
cócó
p
h
ầ
n
p
h
ầ
n
yy
gg
qy)qy)
qyqy
gg
pp
nàynày thìthì sẽsẽ bịbị lặplặpvôvô hạnhạnvàvà sinhsinh lỗilỗi khikhi thựcthựchiệnhiện ĐôiĐôi lúclúc gọigọi
tt
h
u
ậ
tto
á
nto
á
n
ởở
m
ộ
tm
ộ
tc
ấ
pc
ấ
p
độđộ
t
hấ
pt
hấ
p
h
ơn
h
ơn
Phạm Thế Bảo
đệđệ
ốố
ấấ
thấthấ
m
ột
m
ột
lờilời
gọ
i
gọ
i
đệđệ
quyquy xu
ố
ngxu
ố
ng c
ấ
pc
ấ
p
thấ
p
thấ
p
VíVí dụdụ::
íhíh
iiii