Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 57 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
57
Dung lượng
351,12 KB
Nội dung
Thö Vieän C Y!M: Information.Technology@yahoo.com.vn
Mr.Vũ Kim Hiếu 1
Thư ViệnC
Hi! Đây là Thưviện các hàmtrongC căn bản mà mình sưu tầm được! nó rất hay và hữu
ích đó các bạn. Hi vọng bài viết này sẽ giúp ích cho các bạn trong việc học lập trình C. Thân!
Mr.Vũ Hiếu.
1. In/Out
Danh sách cáchàm sử dụng In/Out
1.clearerr
2.fclose
3.feof
4.ferror
5.fflush
6.fgetc
7.fgetpos
8.fgets
9.fopen
10.fprintf
11.fputc
12.fputs
13.fread
14.freopen
15.fscanf
16.fseek
17.fsetpos
18.ftell
19.fwrite
20.getc
21.getchar
22.gets
Thö Vieän C Y!M: Information.Technology@yahoo.com.vn
Mr.Vũ Kim Hiếu 2
23.perror
24.printf
25.putc
26.putchar
27.puts
28.remove
29.rename
30.rewind
31.scanf
32.setbuf
33.setvbuf
34.sprintf
35.sscanf
36.tmpfile
37.tmpnam
38.ungetc
39.vprintf, vfprintf, and vsprintf
Hàm clearerr
Khai báo :
Trích dẫn:
void clearerr(FILE *stream);
Xoá tín hiệu lỗi gây ra bởi hệ thống khi thao tác trên tập tin gặp lỗi .
Example
Code:
#include <stdio.h>
int main(void)
{
FILE *fp;
char ch;
Thö Vieän C Y!M: Information.Technology@yahoo.com.vn
Mr.Vũ Kim Hiếu 3
/* mo tep tin de ghi */
fp = fopen("DUMMY.FIL", "w");
/*gay nen mot loi bang cach doc file*/
ch = fgetc(fp);
printf("%c\n",ch);
if (ferror(fp))
{
/* xuat ra man hinh thong bao loi */
printf("Error reading from DUMMY.FIL\n");
/* xoa tin hieu loi */
clearerr(fp);
}
fclose(fp);
return 0;
}
Hàm fclose
Khai báo :
Trích dẫn:
int fclose(FILE *stream);
Đóng tệp lại sau khi thao tác , stream là tên con trỏ tệp . Khi thành công hàm trả về 0 , trái lại
trả về EOF ( hằng chỉ thị kết thúc tệp )
Example
Code:
#include <string.h>
#include <stdio.h>
int main(void)
{
FILE *fp;
char buf[11] = "0123456789";
fp = fopen("DUMMY.FIL", "w");
fwrite(&buf, strlen(buf), 1, fp);
/* dong tep */
fclose(fp);
return 0;
}
Hàm feof
Khai báo :
Trích dẫn:
Thö Vieän C Y!M: Information.Technology@yahoo.com.vn
Mr.Vũ Kim Hiếu 4
int feof(FILE *stream);
Hàm dùng để kiểm tra con trỏ tệp có đến cuối tệp hay chưa . Nếu nó đến cuối tệp thì hàm trả về
giá trị khác 0 , ngược lại trả về 0
Example
Code:
#include <stdio.h>
int main(void)
{
FILE *stream;
/* mo mot tep de doc */
stream = fopen("DUMMY.FIL", "r");
/* doc mot ky tu tu tep */
fgetc(stream);
/*kiem tra xem cuoi tep hay chua */
if (feof(stream))
printf("We have reached end-of-file\n");
/* dong tep*/
fclose(stream);
return 0;
}
Hàm ferror
Khai báo :
Trích dẫn:
int ferror(FILE *stream);
Kiểm tra lỗi thao tác trên tệp . Hàm trả về giá trị khác 0 nếu có lỗi , ngược lại trả về 0 .
Example :
Code:
#include <stdio.h>
int main(void)
{
FILE *stream;
/* mo tep de ghi */
stream = fopen("DUMMY.FIL", "w");
/* gay ra mot loi bang cach doc*/
(void) getc(stream);
if (ferror(stream)) /* kiem tra loi tren tep*/
{
/* ghi loi ra man hinh*/
printf("Error reading from DUMMY.FIL\n");
Thö Vieän C Y!M: Information.Technology@yahoo.com.vn
Mr.Vũ Kim Hiếu 5
/* xoa tin hieu loi*/
clearerr(stream);
}
fclose(stream);
return 0;
}
Hàm fflush
Khai báo :
Trích dẫn:
int fflush(FILE *stream);
Hàm dùng làm sạch vùng đệm của tệp . Nếu thành công hàm cho giá trị 0 , trái lại hàm trả về
EOF
Example
Code:
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <io.h>
void flush(FILE *stream);
int main(void)
{
FILE *stream;
char msg[] = "This is a test";
/* tao 1 tep */
stream = fopen("DUMMY.FIL", "w");
/*ghi mot vai du lieu len tep */
fwrite(msg, strlen(msg), 1, stream);
clrscr();
printf("Press any key to flush DUMMY.FIL:");
getch();
flush(stream);
printf("\nFile was flushed, Press any key to quit:");
getch();
return 0;
}
void flush(FILE *stream)
{
int duphandle;
/* lam sach vung dem */
fflush(stream);
Thö Vieän C Y!M: Information.Technology@yahoo.com.vn
Mr.Vũ Kim Hiếu 6
duphandle = dup(fileno(stream));
close(duphandle);
}
Hàm fgetc
Khai báo :
Trích dẫn:
int fgetc(FILE *stream);
Hàm dùng lấy 1 ký tự từ tệp do con trỏ tệp stream trỏ đến . Nếu thành công hàm trả về mã
ASCII của ký tự đọc được . Nếu gặp lỗi hay gặp kết thúc tệp thì hàm trả về EOF .
Example
Code:
#include <string.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{
FILE *stream;
char string[] = "This is a test";
char ch;
/* mo tep de ghi va doc */
stream = fopen("DUMMY.FIL", "w+");
/* ghi len tep mot chuoi */
fwrite(string, strlen(string), 1, stream);
/* dat con tro tep len dau tep */
fseek(stream, 0, SEEK_SET);
do
{
/* doc mot ky tu tu tep */
ch = fgetc(stream);
/* in ra man hinh ky tu doc duoc */
putch(ch);
} while (ch != EOF);
fclose(stream);
return 0;
}
Hàm fgetpos
Khai báo :
Trích dẫn:
Thö Vieän C Y!M: Information.Technology@yahoo.com.vn
Mr.Vũ Kim Hiếu 7
int fgetpos( FILE *stream,fpos_t *pos )
Hàm dùng lấy vị trí con trỏ tệp ( ở byte thứ mấy ) lưu vào trong biến pos . Nếu thành công hàm
trả về 0 , ngược lại hàm trả về giá trị khác 0 .
Example
Code:
#include <stdlib.h>
#include <stdio.h>
void showpos(FILE *stream);
int main(void)
{
FILE *stream;
fpos_t filepos;
/* mo file de doc ghi */
stream = fopen("DUMMY.FIL", "w+");
/* luu lai vi tri con tro tep hien thoi */
fgetpos(stream, &filepos);
/* ghi du lieu len tep */
fprintf(stream, "This is a test");
/* in ra man hinh vi tri con tro hien thoi */
showpos(stream);
/* dat lai vi tri con tro tep */
if (fsetpos(stream, &filepos) == 0)
showpos(stream);
else
{
fprintf(stderr, "Error setting file pointer.\n");
exit(1);
}
/* dong tep*/
fclose(stream);
return 0;
}
void showpos(FILE *stream)
{
fpos_t pos;
/* in ra man hinh vi tri con tro tep hien thoi */
fgetpos(stream, &pos);
printf("File position: %ld\n", pos);
}
Hàm fgets
Khai báo :
Trích dẫn:
Thö Vieän C Y!M: Information.Technology@yahoo.com.vn
Mr.Vũ Kim Hiếu 8
char *fgets(char *s,int n,FILE *fp);
Hàm dùng để đọc một chuỗi ký tự dài n-1 ký tự từ tệp fp vào chuỗi s . Việc đọc kết thúc khi đã
đọc đủ n-1 ký tự hay gặp dấu xuống dòng hay gặp kết thúc tệp . Sau khi đọc , chuỗi s sẽ được
tự động thêm vào ký tự NULL vào cuối chuỗi . Hàm trả về điạ chỉ chuỗi s nếu thành công , trái lại
trả về NULL .
Example
Code:
#include <string.h>
#include <stdio.h>
int main(void)
{
FILE *stream;
char string[] = "This is a test";
char msg[20];
/* mo tep de doc ghi */
stream = fopen("DUMMY.FIL", "w+");
/* ghi mot chuoi vao tep */
fwrite(string, strlen(string), 1, stream);
/* dat con tro tep len dau tep */
fseek(stream, 0, SEEK_SET);
/* doc mot chuoi tu tep */
fgets(msg, strlen(string)+1, stream);
/* in chuoi ra man hinh */
printf("%s", msg);
fclose(stream);
return 0;
}
Hàm fopen
Khai báo :
Trích dẫn:
FILE *fopen(char *filename,char *type );
Hàm dùng để mở tệp . Với filename là chuỗi chứa tên tệp cần mở ( bao gồm cả đường dẫn cụ
thể ) . Lưu ý một chút với filename này . Nếu bạn nhập chuỗi từ bàn phím thì khác với bạn đánh
sẵn nó trong code của bạn . Ví dụ tệp ta cần mở tên là abc.jpg nằm ở ổ C . Đối với đánh tên tệp
từ bàn phím thì ta đánh như sau : C:\abc.jpg . Nhưng nếu ta soạn sẵn trong code thì ta soạn
như sau : C:\\abc.jpg ( tức là thêm 1 gạch \ ) .
Kiểu mở tệp có rất nhiều cách nhưng chung quy ta có các trường hợp sau cho kiểu văn bản :
"r" : đọc
"w" : ghi
"r+" hay "w+" : đọc và ghi
"a" : ghi bổ sung
"a+" : đọc ghi bổ sung
Thö Vieän C Y!M: Information.Technology@yahoo.com.vn
Mr.Vũ Kim Hiếu 9
Đối với mở file nhị phân bạn chỉ cần thêm chữ b vào sau các chuỗi trên .
Nếu việc mở tệp thành công hàm cho địa chỉ con trỏ tệp , trái lại hàm trả về NULL .
Example
Code:
#include <stdio.h>
int main(void)
{
FILE *in, *out;
if ((in = fopen("\\AUTOEXEC.BAT", "r"))
== NULL)
{
fprintf(stderr, "Cannot open input file.\n");
return 1;
}
if ((out = fopen("\\AUTOEXEC.BAK", "w"))
== NULL)
{
fprintf(stderr, "Cannot open output file.\n");
return 1;
}
while (!feof(in))
fputc(fgetc(in), out);
fclose(in);
fclose(out);
return 0;
}
Hàm fprintf
Khai báo :
Trích dẫn:
int fprintf(FILE *fp,char *s, );
Hàm này chức năng y chang như hàm printf nhưng thay vì ghi ra màn hình thì nó ghi lên tệp fp .
Nếu thành công hàm trả về số byte ghi được lên tệp , trái lại hàm trả về EOF .
Example
Code:
#include <stdio.h>
int main(void)
{
FILE *stream;
int i = 100;
char c = 'C';
float f = 1.234;
Thö Vieän C Y!M: Information.Technology@yahoo.com.vn
Mr.Vũ Kim Hiếu 10
/* mo tep de doc ghi */
stream = fopen("DUMMY.FIL", "w+");
/* ghi du lieu len tep */
fprintf(stream, "%d %c %f", i, c, f);
/* dong tep */
fclose(stream);
return 0;
}
Hàm fputc
Khai báo :
Trích dẫn:
int fputc(int ch,FILE *fp);
Hàm ghi một ký tự có mã ASCII là ch lên tệp fp . khi thành công trả về mã ASCII của
ký tự được ghi , trái lại hàm cho EOF .
Example
Code:
#include <stdio.h>
int main(void)
{
char msg[] = "Hello world";
int i = 0;
while (msg[i])
{
fputc(msg[i], stdout);
i++;
}
return 0;
}
Hàm fputs
Khai báo :
Trích dẫn:
int fputs(char *s,FILE *fp);
Hàm ghi lên tệp fp chuỗi s . Chú ý rằng chuỗi s nên kết thúc bằng ký tự NULL , nếu ko việc ghi
lên có thể bị sai lệch . Ký tự NULL này để chỉ ra vị trí kết thúc tệp cho rõ ràng chứ nó ko được ghi
lên tệp . Hàm trả về ký tự cuối cùng được ghi lên tệp nếu thành công , trái lại hàm cho EOF .
Example
Code:
[...]... C Y!M: Information.Technology@yahoo.com.vn printf("Chuoi sau khi noi: %s",result); return 0; } 29 strncmp() tên hàm: strncmp() định nghĩa: PHP Code: #include int strncmp( const char *str1, const char *str2, size_t count ); Giống hàm strcmp() nhưng chỉ so sánh 'count' bytes cho trư c 30 strncpy() tên hàm: strncpy() định nghĩa: PHP Code: #include char *strncpy( char *to, const char... return 0; } 28 strncat() tên hàm: strncat() định nghĩa: PHP Code: #include char *strncat( char *str1, const char *str2, size_t count ); Nối chuôi c ban như hàm strcat() nhưng chỉ định số byte c a chuỗi str2 để nối vào str1 PHP Code: #include #include int main(void) { const char *str1="con ga"; const char *str2=" xcross87 is crazy"; char *result; result = strncat(str1,str2,9);... 11 ispunct() Mr.Vũ Kim Hiếu 23 Thö Vieän C Y!M: Information.Technology@yahoo.com.vn Tên hàm: ispunct() Định nghĩa: PHP Code: #include int ispunct( int ch ); Punctuation Character là cc kí tự trong nhóm Graphical Character nhưng không phải là chữ c i hay số Đúng thì trả về kh c 0 Sai thì trả về 0 PHP Code: #include #include int main(void) { char x='\''; if(ispunct(x)) {... PHP Code: #include void *memcpy( void *to, const void *from, size_t count ); Copy 'count' kí tự từ 'from' sang 'to' Giá trị trả về là 'to' Chú ý: hàm này sẽ copy nguyên chính x c số bytes c n copy và không copy bytes cuối c ng c a string '\0' Vì vậy c n phải copy n+1 nếu muốn copy n byte PHP Code: #include #include int main(void) { const char from[]="Xcross87 is a chick... const char *str2 ); 24 strcpy() tên hàm: strcpy() định nghĩa: PHP Code: #include char *strcpy( char *to, const char *from ); Copy từ chuỗi 'from' sang chuỗi 'to' Chú ý: hàm dễ xảy ra buffer overflow PHP Code: #include #include int main(void) { const char *from="Xcross87 "; char *to; Mr.Vũ Kim Hiếu 30 Thö Vieän C Y!M: Information.Technology@yahoo.com.vn to = strcpy(to,from);... return 0; } Hàm fscanf Khai báo : Trích d n: int fscanf(FILE *fp,char *s, ); Hàm c ch c năng đ c dữ liệu từ tệp Làm vi c giống như hàm scanf nhưng thay vì đ c từ màn hình thì hàm fscanf đ c từ tệp thôi Hàm trả về 1 giá trị bằng số trường đ c đư c Example Code: #include #include int main(void) { int i; printf("Input an integer: "); /* doc mot so nguyen tu dong vao chuan */ Mr.Vũ... printf("%s\n", buf); fclose(stream); return 0; } Mr.Vũ Kim Hiếu 11 Thö Vieän C Y!M: Information.Technology@yahoo.com.vn Hàm freopen Khai báo : Trích d n: FILE *freopen(char *filename,char *type,FILE *fp); Hàm này c ch c năng gán con trỏ tệp fp vào tệp filename Sau đó c thể mở đ c ghi trên tệp này thông qua con trỏ tệp fp Hàm này đ c biệt c ích khi ta muốn gán c c con trỏ tệp chuẩn ( stdin , stdout... *strrchr( const char *str, int ch ); Trả về sự xuất hiện cuối c ng c a kí tự 'ch' trong chuỗi 'str' 35 strstr(0 tên hàm: strstr() định nghĩa: PHP Code: #include size_t strspn( const char *str1, const char *str2 ); trả về con trỏ tới vị trí đầu tiên c a str2 trong str1 nếu tìm thấy trả về NULL nếu không thấy nếu độ dài c a str2 là 0 thì trả về độ dài c a str1 PHP Code: #include #include... printf("Ki tu %c la punct char",x); } else { printf("Ki tu %c ko phai punct char",x); } return 0; } 12 isspace() Tên hàm: isspace() Định nghĩa: PHP Code: #include int isspace( int ch ); Space Character là những kí tự tạo nên khoảng trắng (line feed, form feed ) Đúng thì trả về kh c 0 Sai thì trả về 0 PHP Code: #include #include int main(void) { char x='\x0B'; if(isspace(x)) {... Sau khi noi chuoi: %s ",str1); return 0; } 21 strchr() tên hàm: strchr() Định nghĩa: PHP Code: #include char *strchr( const char *str, int ch ); Hàm trả về giá trị chuỗi bắt đầu với 'ch' trong chuỗi 'str' Trả về NULL nếu không tìm thấy gì hết ví dụ dưới đây sẽ cho ra kết quả là : 'ss87' PHP Code: #include #include int main(void) { const char *str="Xcross87 "; char* found; . Thö Vieän C Y!M: Information.Technology@yahoo.com.vn Mr.Vũ Kim Hiếu 1 Thư Viện C Hi! Đây là Thư viện c c hàm trong C căn bản mà mình sưu tầm đư c! nó rất hay và hữu ích đó c c bạn. Hi. giúp ích cho c c bạn trong vi c h c lập trình C. Thân! Mr.Vũ Hiếu. 1. In/Out Danh sách c c hàm sử dụng In/Out 1.clearerr 2.fclose 3.feof 4.ferror 5.fflush 6.fgetc 7.fgetpos. thì ta soạn như sau : C: \abc.jpg ( t c là thêm 1 gạch ) . Kiểu mở tệp c rất nhiều c ch nhưng chung quy ta c c c trường hợp sau cho kiểu văn bản : "r" : đ c "w" : ghi