Dãy kí t
Dãy kí t có th đ c thay đ i n i dung c a nó mà không c n đ n ượ ế th vi n chu nư . Tuy
nhiên, th vi n này có nhi u hàm có th dùng cho c dãy kí t có k t thúc 0 và m ngư ế
không có kí t k t thúc ki u char. Trong ph n này t "dãy" đ c đ ch dãy kí t . ế ượ
Các hàm th ng dùng là:ườ
strcat(dest, source) - n i m t dãy kí t source ti p vào v trí cu i c a dãy kí t dest ế
strchr(source, c) - tìm v trí s xu t hi n đ u tiên c a c trong dãy kí t source và tr
v con tr ch t i v trí đó hay con tr tr ng n u c không tìm th y trong source ế
strcmp(a, b) - so sánh hai dãy kí t a và b (theo th t t đi n); tr v s âm n u a ế
nh h n b, 0 n u chúng b ng nhau, d ng n u a l n h n ơ ế ươ ế ơ
strcpy(dest, source) - chép và thay các kí t c a dãy dest vào dãy dest
strlen(st) - tr v đ dài c a st
strncat(dest, source, n) - n i t i đa n kí t t dãy source ti p vào v trí cu i c a dãy ế
dest; các kí t sau d u k t thúc null s không đ c chép vào ế ượ
strncmp(a, b, n) - so sánh t kí t đ u cho đ n t i đa n kí t t hai dãy a và b (theo ế
th t t đi n); hàm tr v s âm n u ph n so sánh c a a nh h n b, 0 n u b ng ế ơ ế
nhau, và d ng n u l n h nươ ế ơ
strncpy(dest, source, n) - chép t đ u đ n t i đa n kí t t dãy source vào dãy dest ế
strrchr(source, c) - tìm v trí hi n l n cu i cùng c a kí t c trong dãy source và tr
v m t con tr ch vào v trí đó hay con tr tr ng n u không tìm th y c trong đó ế
Các hàm ít dùng t i h n là: ơ
strcoll(s1, s2) - so sánh hai dãy theo m t trình t đ a ph ng đ c thù ươ
strcspn(s1, s2) - tr v ch s c a kí t đ u tiên trong s1 trùng v i kí t b t kì nào
trong s2
strerror(err) - tr v m t dãy kí t d i d ng m t thông báo l i ng v i mã (câu ướ
vi t) trong errế
strpbrk(s1, s2) - tr v m t con tr ch vào kí t đ u tiên nào trong s1 mà trùng v i
kí t b t kì trong s2 hay m t con tr tr ng n u không tìm th y ế
strspn(s1, s2) - tr v ch s c a kí t đ u tiên trong s1 mà nó không xu t hi n
trong s2
strstr(source, subst) - tr v m t con tr ch t i v trí c a dãy subst trong dãy source
hay tr v m t con tr r ng n u không t n t i m t dãy nh v y bên trong source ế ư
strtok(s1, s2) - tr v m t con tr ch đ n m t token bên trong s1 mà đ c phân ế ượ
chia ra b i các kí t trong s2
strxfrm(s1, s2, n) - chuy n đ i s2 thành s1 dùng các quy t c đ a ph ng đ c thù ươ
C - Các hàm và th vi n c a nóư
TH VI N TIME.HƯ
Các đ i t ng ki u struct tm đ c s d ng đ l u tr ngày tháng và th i gian. ượ ượ ư
struct tm
{
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year; //year since 1900
int tm_wday; //days since Sunday
int tm_yday; //days since 1 January: [0,365]
int tm_isdst; //daylight saving time flag
}
C tm_isdst là s d ng (+) n u daylight saving time có tác d ng, b ng 0 n u không có, là ươ ế ế
s âm (-) n u không có thông tin. ế
Mã quy cách Ý nghĩa
%a Tên ngày trong tu n vi t t t ế
%A Tên ngày trong tu n đ y đầầủ
%b Tên tháng vi t t tế
%B Tên tháng đ y đ
%c Date và time
%d Ngày trong tháng
%H Gi trong ngày, 24 gi
%h Gi trong ngày, 12 gi
%j Ngày trong năm
%m Tháng
%M Phút sau gi
%p AM hay PM
%s Giây trong gi
%U Tu n trong năm
%w Ngày trong tu n (0-6)
%x Date
%X Time
%y Năm trong th kế
%Y Năm
%Z Múi gi
%% Ký t %
Truy nh p vào đ ng h
clock_t clock (void);
Đây là s xung đ ng h c a máy. Mu n tính ra giây, ta đem chia v i CLOCK_PER_SEC.
N u t o xung đ ng h c a CPU không có, hàm tr l i giá tr 1.ế
Truy nh p vào th i gian
double difftime (time_t t0, time_t t1);
char *asctime (const struct tm *tp);
size_t strftime (char *s, size_t n, const char *cntrl_str, const struct tm*tp);
structtm *gmtime (const time_t *t_ptr);
struct tm *localtime (const time_t *t_ptr);
time_t mktime (struct tm *tp);
time_t time (time_t *timer); nh n th i gian h th ng quy ra giây
void getdate (struct date *datep); nh n ngày h th ng
void setdate (struct date *datep); thi t l p ngày h th ngế
void gettime (struct time *timep); nh n gi h th ng
void settime (struct time *timep); thi t l p gi h th ngế
TH VI N STRING.HƯ
Các hàm qu n lý b nh
int memcmp (const void *s1, const void *s2, size_t n); so sánh n byte trong 2 chu i s1, s2
(phân bi t ch hoa, ch th ng) ườ
N u giá tr tr v >0 thì chu i s1 > chu i s2ế
N u giá tr tr v <0 thì chu i s2 < chu i s1ế
N u giá tr tr v =0 thì chu i s2 gi ng chu i s1ế
int memicmp (const void *s1, const void *s2, size_t n); so sánh n byte trong 2 chu i s1, s2
(không phân bi t ch hoa, ch th ng) ườ
N u giá tr tr v >0 thì chu i s1 > chu i s2ế
N u giá tr tr v <0 thì chu i s2 < chu i s1ế
N u giá tr tr v =0 thì chu i s2 gi ng chu i s1ế
void *memchr (const void *s, int c, size_t n); tìm ký t c trong n byte đ u c a vùng s, n u ế
tìm th y, hàm tr v đ a ch c a byte ch a ký t c đ u tiên trong s, trái l i, tr v NULL
void *memccpy (void *dest, const void *src, int c, size_t n); sao chép các ký t t vùng src
sang vùng dest, vi c sao chép k t thúc khi g p ký t c ho c đã sao chép đ n ký t ế
void *memcpy (void *dest, const void *src, size_t n); sao chép n ký t t vùng src sang vùng
dest, hàm cho l i đ a ch vùng dest
void *memmove (void *dest, const void *src, size_t n);
void *memset (void *s, int c, size_t n); g i ký t c vào n byte đ u c a chu i s, hàm tr l i
đ a ch chu i s
void movedata (unsigned srcseg, unsigned srcoff, unsigned destseg, unsigned destoff, size_t
n); sao chép n byte t phân đo n srcseg:srcoff đ n đ a ch destseg:destoff ế
Các hàm qu n lý xâu ký t
char *gets (char *s); nh p chu i
char *puts (char *s); xu t chu i
char *strcat (char *s1, const char *s2); ghép chu i s2 vào đuôi chu i s1
char *strchr (const char *s, int c); tìm ký t c trong chu i s (b t đ u t bên trái), không có
tr v NULL
char *strcpy (char *s1, const char *s2); sao chép n i dung trong s2 vào trong s1
char *strdup (const char *s); g p đôi chu i s
char *strerror (int error_number);
char *strlwr (char *s); đ i chu i s thành ch th ng ườ
char *strncat (char *s1, const char *s2, size_t n);
char *strncpy (char *s1, const char *s2, size_t n); sao chép t i đa n ký t đ u c a chu i s2
vào trong s1
char *strnset (char *s, int c, int n); gán n l n ký t c vào trong chu i s
char *strpbrk (const char *s1, const char *s2); tìm l n xu t hi n đ u tiên c a m t ký t
thu c s2 trong s1, n u có, hàm cho đ a ch c a ký t tìm th y trong s1, trái l i, hàm cho ế
NULL
char *strrchr (const char *s, int c); tìm ký t c trong chu i s (b t đ u t bên ph i), không có
tr v NULL
char *strrev (char *s); đ o ng c các ký t trong chu i s ượ
char *strset (char *s, int c); đ t ký t c vào m i v trí trong chu i s (thay các ký t trong s
b ng c)
char *strstr (const char *s1, const char *s2); tìm chu i s2 trong chu i s1, tr v v trí chu i
s2 trong chu i s1
char *strtok (char *s1, const char *s2);
char *strupr (char *s); đ i chu i s thành ch hoa
int strcmp (const char *s1, const char *s2); tr v k t qu so sánh 2 chu i s1 và s2, không ế
phân bi t ch hoa, ch th ng c a cùng m t ký t ườ
N u giá tr tr v >0 thì chu i s1 ch a chu i s2ế
N u giá tr tr v <0 thì chu i s2 ch a chu i s1ế
N u giá tr tr v =0 thì chu i s2 gi ng chu i s1ế
int strcoll (const char *s1, const char *s2);
int stricmp (const char *s1, const char *s2); tr v k t qu so sánh 2 chu i s1 và s2, phân ế
bi t ch hoa, ch th ng c a cùng m t ký t ườ
N u giá tr tr v >0 thì chu i s1 ch a chu i s2ế
N u giá tr tr v <0 thì chu i s2 ch a chu i s1ế
N u giá tr tr v =0 thì chu i s2 gi ng chu i s1ế
int strncmp (const char *s1, const char *s2, size_t n); so sánh n ký t đ u tiên c a chu i s1
và s2
int strnicmp (const char *s1, const char *s2, size_t n); so sánh n ký t đ u tiên c a chu i s1
và s2, không phân bi t ch hoa, ch th ng c a cùng m t ký t ườ
size_t strcspn (const char *s1, const char *s2); tìm đ dài đo n đ u c a chu i
size_t strlen (const char *s); xác đ nh chi u dài chu i s
size_t strspn (const char *s1, const *s2); tìm đ dài đo n đ u c a chu i
size_t strxfrm (char *s1, const char *s2, size_t n);
unsigned *strlen (const char *s); xác đ nh chi u dài chu i s
TH VI N STDLIB.HƯ
File tiêu đ này ch a các nguyên m u c a các hàm đ c s d ng vào các m c đích chung, ượ
ho c v i các macro và các đ nh nghĩa ki u có liên quan.
C p phát b nh đ ng
unsigned coreleft (void); cho bi t b nh kh d ng trong vùng c p phát đ ng đ i v i môế
hình tiny, small và medium
unsigned long coreleft (void); cho bi t b nh kh d ng trong vùng c p phát đ ng đ i v iế
mô hình compact large và huge
void *calloc (size_t n, size_t size); c p phát vùng nh cho n đ i t ng kích c size byte ượ
void *malloc (size_t size); c p phát vùng nh cho size byte
void *realloc (void *block, size_t size); c p phát l i b nh
void free (void *block); gi i phóng vùng nh đã c p phát
Tìm ki m và s p x pế ế
void *bsearch (const void *key_ptr; const void *a_ptr, size_t n_els, size_t el_size, int
compare (const void *, const void *));
void qsort (vois *a_ptr, size_t n_els, size_t el_size, int compare (const void *, const void *));
T o s nh u nhiên
int random (int n); t o các s ng u nhiên trong kho ng t 0 đ n (num-1) ế
int rand (void); t o s ng u nhiên trong kh ang t 0 đ n 32767 ế
void randomize (void); kh i đ ng c ch t o s ng u nhiên b ng giá tr ng u nhiên ơ ế
void srand (unsigned seed); kh i t o b t o s ng u nhiên b ng giá tr seed, không có giá
tr tr l i
Truy n thông v i môi tr ng ườ
char *getenv (const char *name);
int system (const char *s);
S h c
int abs (int x);
long labs (long x);
div_t div (int numer, int denom);
ldiv_t ldiv (long numer, long deniom);
Chuy n đ i xâu ký t
char *itoa (int x, char *s, int cs); chuy n s nguyên x trong h đ m c s cs sang chu i và ế ơ
l u vào vùng nh s, hàm tr v đ a ch c a vùng sư
char *ltoa (long x, char *s, int cs); chuy n s ki u long x trong h đ m c s cs sang chu i ế ơ
và l u vào vùng nh s, hàm tr v đ a ch c a vùng sư
char *ultoa (unsigned long x, char *s, int cs); chuy n s ki u unsigned long x trong h đ m ế
c s cs sang chu i và l u vào vùng nh s, hàm tr v đ a ch c a vùng sơ ư
double atof (const char *s); chuy n đ i xâu các ch s str thành m t s float
int atoi (const char*s); chuy n đ i xâu các ch s str thành m t s int
long atol (cont char *s); chuy n đ i xâu các ch s str thành m t s long
double strtod (const char *s, char **end_ptr);
long strtol (const char *s, char **end_ptr, int base);
unsigned long strtoul (const char *s, char **end_ptr, int base);
char *ecvt (double value, int ndig, int *dec, int *sign); chuy n giá tr ki u double sang chu i
ch g m các ch s
char *fcvt (double value, int ndig, int *dec, int *sign); chuy n giá tr ki u double sang chu i
ch g m các ch s
char *gcvt (double value, int ndec, char *buf); chuy n giá tr ki u double sang chu i có c
d u ch m th p phân và d u (-) cho s âm
Các hàm ký t nhi u byte
int mblen (const char *s, size_t n);
int mbrowc (wchar_t *p, const char *s, size_t n);
int wctomb (char *s, wchar_t wc);
Các hàm xâu ký t nhi u byte
size_t mbstowcs (wchar_t *wcs, const char *mbs, size_t n);
int wcstombs (char *mbs, const wchar_t *wcs, size_t n);
R i kh i ch ng trình ươ
void abort (void); k t thúc ch ng trình m t cách không bình th ngế ươ ườ
int atexit (atexit_t func);
void exit (int status); k t thúc ch ng trình m t cách bình th ngế ươ ườ
TH VI N CONIO.HƯ