C语言文件操作常用函数详解
- 格式:doc
- 大小:50.50 KB
- 文档页数:8
C语言函数大全C语言作为一种广泛应用的计算机编程语言,其函数是程序设计中不可或缺的部分。
C语言函数大全涵盖了C语言中常用的各种函数,包括数学函数、字符串函数、输入输出函数等,本文将对这些函数进行详细介绍。
一、数学函数。
1. abs函数。
abs函数用于返回一个整数的绝对值,其原型为int abs(int x)。
2. pow函数。
pow函数用于计算一个数的幂,其原型为double pow(double x, double y)。
3. sqrt函数。
sqrt函数用于计算一个数的平方根,其原型为double sqrt(double x)。
4. sin函数。
sin函数用于计算一个角度的正弦值,其原型为double sin(double x)。
5. cos函数。
cos函数用于计算一个角度的余弦值,其原型为double cos(double x)。
6. tan函数。
tan函数用于计算一个角度的正切值,其原型为double tan(double x)。
二、字符串函数。
1. strlen函数。
strlen函数用于返回一个字符串的长度,其原型为size_t strlen(const char s)。
2. strcpy函数。
strcpy函数用于将一个字符串复制到另一个字符串中,其原型为charstrcpy(char dest, const char src)。
3. strcat函数。
strcat函数用于将一个字符串追加到另一个字符串的末尾,其原型为char strcat(char dest, const char src)。
4. strcmp函数。
strcmp函数用于比较两个字符串,其原型为int strcmp(const char s1, const char s2)。
5. strchr函数。
strchr函数用于在一个字符串中查找指定字符的位置,其原型为charstrchr(const char s, int c)。
C语言常用数学函数1.数学函数:如sqrt、sin、cos、tan、exp、log等,可用于处理数学运算。
比如:x表示需要计算平方根的数值。
sqrt函数会返回x的正平方根,如果x是负数,则返回NaN(Not a Number)。
exp用于计算一个数的自然指数值(以e为底的指数)。
log函数返回x的自然对数,即ln(x)。
Doubl esqrt(doublex);2.字符串函数:如strcpy、strncpy、strcat、strcmp、strlen等,用于处理字符串。
strcpy用于将一个字符串复制到另一个字符串中。
dest表示目标字符串的起始地址,src表示源字符串的起始地址。
当使用strcpy函数进行字符串复制时,必须确保目标字符串空间足够大,否则可能会导致内存访问越界等问题。
char*strcpy(char*dest,constchar*src);strncpy用于将一个字符串的部分内容复制到另一个字符串中。
,n表示需要复制的字符个数。
如果源字符串长度小于n,则目标字符串将被填充一些空字符直到长度为n。
char*strncpy(char*dest,constchar*src,size_tn);strcat用于将一个字符串连接到另一个字符串的末尾。
strcmp用于比较两个字符串的大小关系。
strlen用于计算一个字符串的长度(即包含多少个字符)。
注意的是,strlen函数不会计算空字符'\0'的长度。
3.文件操作函数:如fopen、fclose、fread、fwrite、fgets 等,可用于文件的读取和写入。
4.内存函数:如malloc、calloc、realloc、free等,用于动态内存分配和释放。
malloc用于动态分配内存空间。
free用于释放动态分配的内存空间。
5.格式化函数:如printf、scanf、sprintf、sscanf等,用于输入输出和格式化字符串。
c语言io详解C语言中的I/O(输入/输出)操作是与程序外部世界进行数据交换的关键部分。
C标准库提供了一组函数来执行不同类型的I/O操作。
以下是一些常见的C语言I/O函数,以及它们的基本用法:标准输入输出函数:1. printf():-用于输出格式化的数据到标准输出(通常是屏幕)。
-例子:```cint num = 10;printf("The value of num is %d\n", num);```2. scanf():-用于从标准输入中读取格式化的数据。
-例子:```cint num;printf("Enter a number: ");scanf("%d", &num);```文件I/O函数:3. fopen():-用于打开一个文件,并返回一个文件指针。
-例子:```cFILE *file = fopen("example.txt", "r");```4. fclose():-用于关闭一个打开的文件。
-例子:```cfclose(file);```5. fread() 和fwrite():-用于从文件读取数据和向文件写入数据。
-例子:```cfread(buffer, sizeof(char), 100, file);fwrite(buffer, sizeof(char), 100, newFile);```6. fprintf() 和fscanf():-类似于printf() 和scanf(),但是操作的是文件。
-例子:```cfprintf(file, "The value of num is %d\n", num);fscanf(file, "%d", &num);```7. fgets() 和fputs():-用于逐行读取和写入字符串。
c 标准库函数 pdfC 标准库函数 PDF。
C 标准库函数是 C 语言编程中非常重要的一部分,它包含了大量的函数,可以帮助程序员完成各种任务,比如输入输出、内存管理、字符串操作等。
本文将介绍一些常用的 C 标准库函数,并提供相应的 PDF 文档供大家参考。
1. 输入输出函数。
C 标准库中的输入输出函数包括 printf、scanf、getchar、putchar 等,它们可以实现程序与用户之间的数据交互。
其中,printf 用于输出格式化字符串,而 scanf则用于从标准输入流中读取格式化数据。
getchar 和 putchar 则用于从标准输入流中读取一个字符,以及向标准输出流中输出一个字符。
这些函数在 C 语言编程中被广泛使用,对于初学者来说尤为重要。
2. 内存管理函数。
C 标准库中的内存管理函数包括 malloc、calloc、realloc 和 free,它们用于动态分配和释放内存。
malloc 用于分配指定大小的内存空间,而 calloc 则用于分配指定数量的元素,并将它们初始化为 0。
realloc 则用于重新分配已分配的内存空间的大小,而 free 则用于释放之前分配的内存空间。
这些函数在动态内存管理中发挥着重要作用,程序员需要了解它们的用法和原理。
3. 字符串操作函数。
C 标准库中的字符串操作函数包括 strcpy、strcat、strlen、strcmp 等,它们用于对字符串进行各种操作。
strcpy 用于将一个字符串复制到另一个字符串中,而strcat 则用于将一个字符串连接到另一个字符串的末尾。
strlen 用于计算字符串的长度,而strcmp 则用于比较两个字符串的大小。
这些函数在处理字符串时非常有用,程序员需要熟练掌握它们的用法。
4. 数学函数。
C 标准库中的数学函数包括 sin、cos、tan、exp、log、sqrt 等,它们用于执行各种数学运算。
sin、cos 和 tan 分别用于计算正弦、余弦和正切值,而 exp 和 log 则分别用于计算指数和对数。
1、字符处理函数本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换头文件 ctype.hint isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非0值,否则返回0int isascii(int ch) 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0int iscntrl(int ch) 若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F),返回非0值,否则返回0int isdigit(int ch) 若ch是数字('0'-'9')返回非0值,否则返回0int isgraph(int ch) 若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否则返回0int islower(int ch) 若ch是小写字母('a'-'z')返回非0值,否则返回0int isprint(int ch) 若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否则返回0int ispunct(int ch) 若ch是标点字符(0x00-0x1F)返回非0值,否则返回int isspace(int ch) 若ch是空格(' '),水平制表符('\t'),回车符('\r'), 走纸换行('\f'),垂直制表符('\v'),换行符('\n'), 返回非0值,否则返回0int isupper(int ch) 若ch是大写字母('A'-'Z')返回非0值,否则返回0int isxdigit(int ch) 若ch是16进制数('0'-'9','A'-'F','a'-'f')返回非0值, 否则返回0int tolower(int ch) 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z')int toupper(int ch) 若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z')2、数学函数本分类给出了各种数学计算函数头文件 math.hint abs(int i) 返回整型参数i的绝对值double cabs(struct complex znum) 返回复数znum的绝对值double fabs(double x) 返回双精度参数x的绝对值long labs(long n) 返回长整型参数n的绝对值double exp(double x) 返回指数函数ex的值double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存贮在eptr中double ldexp(double value,int exp); 返回value*2exp的值double log(double x) 返回logex的值double log10(double x) 返回log10x的值double pow(double x,double y) 返回xy的值double pow10(int p) 返回10p的值double sqrt(double x) 返回x的开方double acos(double x) 返回x的反余弦cos-1(x)值,x为弧度double asin(double x) 返回x的反正弦sin-1(x)值,x为弧度double atan(double x) 返回x的反正切tan-1(x)值,x为弧度double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x 为弧度double cos(double x) 返回x的余弦cos(x)值,x为弧度double sin(double x) 返回x的正弦sin(x)值,x为弧度double tan(double x) 返回x的正切tan(x)值,x为弧度double cosh(double x) 返回x的双曲余弦cosh(x)值,x为弧度double sinh(double x) 返回x的双曲正弦sinh(x)值,x为弧度double tanh(double x) 返回x的双曲正切tanh(x)值,x为弧度double hypot(double x,double y) 返回直角三角形斜边的长度(z), x和y为直角边的长度,z2=x2+y2double ceil(double x) 返回不小于x的最小整数double floor(double x) 返回不大于x的最大整数void srand(unsigned seed) 初始化随机数发生器int rand() 产生一个随机数并返回这个数double modf(double value,double *iptr) 将双精度数value分解成尾数和阶double fmod(double x,double y) 返回x/y的余数3、字符串处理本分类的函数用于对字符串进行合并、比较等操作头文件 string.hchar stpcpy(char *dest,const char *src) 将字符串src复制到destchar strcat(char *dest,const char *src) 将字符串src添加到dest末尾char strchr(const char *s,int c) 眷索并返回字符c在字符串s中第一次出现的位置int strcmp(const char *s1,const char *s2) 比较字符串s1与s2的大小,并返回s1-s2char strcpy(char *dest,const char *src) 将字符串src复制到destsize_t strcspn(const char *s1,const char *s2) 扫描s1,返回在s1中有,在s2中也有的字符个数char strdup(const char *s) 将字符串s复制到最近建立的单元int stricmp(const char *s1,const char *s2) 比较字符串s1和s2,并返回s1-s2size_t strlen(const char *s) 返回字符串s的长度char strlwr(char *s)将字符串s中的大写字母全部转换成小写字母,并返回转换后的字符串char strncat(char *dest,const char *src,size_t maxlen)将字符串src中最多maxlen个字符复制到字符串dest中int strncmp(const char *s1,const char *s2,size_t maxlen)比较字符串s1与s2中的前maxlen个字符char strncpy(char *dest,const char *src,size_t maxlen)复制src中的前maxlen个字符到dest中int strnicmp(const char *s1,const char *s2,size_t maxlen)比较字符串s1与s2中的前maxlen个字符char strnset(char *s,int ch,size_t n)将字符串s的前n个字符置于ch中char strpbrk(const char *s1,const char *s2)扫描字符串s1,并返回在s1和s2中均有的字符个数char strrchr(const char *s,int c)扫描最后出现一个给定字符c的一个字符串schar strrev(char *s)将字符串s中的字符全部颠倒顺序重新排列,并返回排列后的字符串char strset(char *s,int ch)将一个字符串s中的所有字符置于一个给定的字符chsize_t strspn(const char *s1,const char *s2)扫描字符串s1,并返回在s1和s2中均有的字符个数char strstr(const char *s1,const char *s2)扫描字符串s2,并返回第一次出现s1的位置char strtok(char *s1,const char *s2)检索字符串s1,该字符串s1是由字符串s2中定义的定界符所分隔char strupr(char *s)将字符串s中的小写字母全部转换成大写字母,并返回转换后的字符串4、输入输出函数该分类用于处理包括文件、控制台等各种输入输出设备,各种函数以“流”的方式实现头文件 stdio.hC语言输入输出函数有很多,标准I/O函数中包含了如下几个常用的函数:scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fge tc,fputc,fscanf,fprintf等.int scanf(const char *format, arg_list)scanf主要从标准输入流中获取参数值,format为指定的参数格式及参数类型,如scanf("%s,%d",str,icount);它要求在标准输入流中输入类似"son of bitch,1000"这样的字符串,同时程序会将"son of bitch"给str,1000给icount.scanf函数的返回值为int值,即成功赋值的个数,在上例中如果函数调用成功,则会返回2,所以我们在写程序时,可以通过语句if(scanf("%s,%d",str,icount) != 2){...}来判断用户输入是否正确.int printf(const char *format, arg_list)printf主要是将格式化字符串输出到标准输出流中,在stdio.h头文件中定义了标准的输入和输出,分别是stdin,stdout.arg_list可以是变量名,也可以是表达式,但最终都会以值的形式填充进format中.int getc(FILE *fp)getc主要是从文件中读出一个字符.常用的判断文件是否读取结束的语句为:(ch = getc(fp)) != EOF.EOF为文件结束标志,定义在stdio.h中,就像EXIT_SUCCESS,EXIT_FAILURE定义在stdlib.h中一样,文件也可以被理解为一种流,所以当fp为stdin时,getc(stdin)就等同于getchar()了.int putc(int ch,FILE *fp)putc主要是把字符ch写到文件fp中去.如果fp为stdout,则putc就等同于putchar()了.int getchar(void)getchar主要是从标准输入流读取一个字符.默认的标准输入流即stdio.h 中定义的stdin.但是从输入流中读取字符时又涉及到缓冲的问题,所以并不是在屏幕中敲上一个字符程序就会运行,一般是通过在屏幕上敲上回车键,然后将回车前的字符串放在缓冲区中,getchar就是在缓冲区中一个一个的读字符.当然也可以在while循环中指定终止字符,如下面的语句:while ((c = getchar()) != '#')这是以#来结束的.int putchar(int ch)putchar(ch)主要是把字符ch写到标准流stdout中去.char * gets(char *str)gets主要是从标准输入流读取字符串并回显,读到换行符时退出,并会将换行符省去.int puts(char *str)puts主要是把字符串str写到标准流stdout中去,并会在输出到最后时添加一个换行符.char *fgets(char *str, int num, FILE *fp)str是存放读入的字符数组指针,num是最大允许的读入字符数,fp是文件指针.fgets的功能是读一行字符,该行的字符数不大于num-1.因为fgets函数会在末尾加上一个空字符以构成一个字符串.另外fgets在读取到换行符后不会将其省略.int fputs(char *str, file *fp)fputs将str写入fp.fputs与puts的不同之处是fputs在打印时并不添加换行符.int fgetc(FILE *fp)fgetc从fp的当前位置读取一个字符.int fputc(int ch, file *fp)fputc是将ch写入fp当前指定位置.int fscanf(FILE *fp, char *format,...)fscanf按照指定格式从文件中出读出数据,并赋值到参数列表中.int fprintf(FILE *fp, char *format,...)fprintf将格式化数据写入流式文件中.5、控制台输入输出函数该类函数主要包含了一些文本模式的屏幕控制函数,象绘画窗口、显示彩色文本,不是 Ansi标准函数,比如getch()函数等等。
归纳整理Linux下C语⾔常⽤的库函数----⽂件操作在没有IDE的时候,记住⼀些常⽤的库函数的函数名、参数、基本⽤法及注意事项是很有必要的。
参照Linux_C_HS.chm的⽬录,我⼤致将常⽤的函数分为⼀下⼏类:1. 内存及字符串控制及操作2. 字符串转换3. 字符测试4. ⽂件操作5. 时间⽇期6. 常⽤数学函数7. ⽂件内容操作8. ⽂件权限控制9. 进程操作10. 线程操作11. Socket操作12. 信号处理13. 数据结构及算法这次主要总结的是上⾯⿊⾊部分,关于⽂件操作的函数。
系统调⽤归类** 函数名⽤法备注**1. int open(const char *pathname, int flags); open and possibly create a file or device flags 必须包含O_RDONLY, O_WRONLY, or O_RDWR中的任何⼀个**2. int open(const char *pathname, int flags, mode_t mode); UP mode只是在flags中包含O_CREAT时才有效**3. int fsync(int fd); synchronize a file's in-core state with storage device 写完数据close前必须先同步,以防意外**4. off_t lseek(int fd, off_t offset, int whence); 定位⽂件位置第三个参数可以为SEEK_SET SEEK_CUR SEEK_END**5. ssize_t read(int fildes, void *buf, size_t nbyte); UP ⽂件位置会随读取的字节数移动**6. ssize_t write(int fildes, const void *buf, size_t nbyte); UP UP**7. int close(int fd); UP UP**8. void *mmap(void *addr, size_t length, int prot, int flags, 内存映射先⽤fstat得到⽂件⼤⼩,然后使⽤该函数将⽂件内容映射到内存中,然后就可以int fd, off_t offset); 直接调⽤字符串函数操作。
c语言通用系统函数C语言通用系统函数C语言是一种广泛应用于系统编程和嵌入式开发的编程语言。
在C 语言中,系统函数起到了重要的作用,为程序员提供了操作系统底层功能的接口。
本文将介绍一些常用的C语言通用系统函数,帮助读者更好地理解和应用这些函数。
1. 输入输出函数C语言中的输入输出函数主要包括printf、scanf、getchar和putchar等。
其中,printf函数用于将格式化的数据输出到标准输出设备(通常是显示器),而scanf函数用于从标准输入设备(通常是键盘)读取格式化的数据。
getchar函数用于从标准输入设备读取一个字符,而putchar函数用于将一个字符输出到标准输出设备。
2. 字符串处理函数C语言中的字符串处理函数主要包括strlen、strcpy、strcat和strcmp等。
其中,strlen函数用于计算字符串的长度,strcpy函数用于将一个字符串复制到另一个字符串中,strcat函数用于将一个字符串连接到另一个字符串的末尾,而strcmp函数用于比较两个字符串是否相等。
3. 数学函数C语言中的数学函数主要包括fabs、sqrt、pow和rand等。
其中,fabs函数用于计算一个浮点数的绝对值,sqrt函数用于计算一个数的平方根,pow函数用于计算一个数的幂次方,而rand函数用于生成一个伪随机数。
4. 文件操作函数C语言中的文件操作函数主要包括fopen、fclose、fread和fwrite 等。
其中,fopen函数用于打开一个文件,fclose函数用于关闭一个文件,fread函数用于从文件中读取数据,而fwrite函数用于将数据写入到文件中。
5. 内存管理函数C语言中的内存管理函数主要包括malloc、free、calloc和realloc 等。
其中,malloc函数用于动态分配内存空间,free函数用于释放之前分配的内存空间,calloc函数用于动态分配并初始化内存空间,而realloc函数用于重新分配之前分配的内存空间。
C语言文件操作函数大全clearerr(清除文件流的错误旗标)相关函数 feof表头文件 #include<stdio.h>定义函数 void clearerr(FILE * stream);函数说明 clearerr()清除参数stream指定的文件流所使用的错误旗标。
返回值fclose(关闭文件)相关函数 close,fflush,fopen,setbuf表头文件 #include<stdio.h>定义函数 int fclose(FILE * stream);函数说明 fclose()用来关闭先前fopen()打开的文件。
此动作会让缓冲区内的数据写入文件中,并释放系统所提供的文件资源。
返回值若关文件动作成功则返回0,有错误发生时则返回EOF并把错误代码存到errno。
错误代码 EBADF表示参数stream非已打开的文件。
范例请参考fopen()。
fdopen(将文件描述词转为文件指针)相关函数 fopen,open,fclose表头文件 #include<stdio.h>定义函数 FILE * fdopen(int fildes,const char * mode);函数说明 fdopen()会将参数fildes 的文件描述词,转换为对应的文件指针后返回。
参数mode 字符串则代表着文件指针的流形态,此形态必须和原先文件描述词读写模式相同。
关于mode 字符串格式请参考fopen()。
返回值转换成功时返回指向该流的文件指针。
失败则返回NULL,并把错误代码存在errno中。
范例#include<stdio.h>main(){FILE * fp =fdopen(0,”w+”);fprintf(fp,”%s\n”,”hello!”);fclose(fp);}执行 hello!feof(检查文件流是否读到了文件尾)相关函数 fopen,fgetc,fgets,fread表头文件 #include<stdio.h>定义函数 int feof(FILE * stream);函数说明 feof()用来侦测是否读取到了文件尾,尾数stream为fopen()所返回之文件指针。
C语言中的fwrite和flush在C语言中,fwrite和flush是两个与文件输入输出相关的函数。
它们在处理文件时起到了不可或缺的作用。
本文将详细介绍这两个函数的使用方法、功能以及常见应用场景。
fwrite函数函数概述fwrite函数是C标准库中的一个文件输入输出函数,用于将数据块从内存写入到指定的文件流中。
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);函数参数•ptr: 指向要写入数据的指针。
•size: 要写入每个数据项的字节数。
•count: 要写入数据项的数量。
•stream: 文件流指针,指定要写入数据的文件。
函数返回值fwrite函数返回实际成功写入的数据项数量。
函数功能fwrite函数将内存中的数据块按照指定大小和数量写入到文件流中。
它可以用来写入各种类型的数据,如整数、浮点数、结构体等。
使用示例下面是一个使用fwrite函数将整数数组写入文件的示例:#include <stdio.h>int main() {int arr[] = {1, 2, 3, 4, 5};FILE *fp = fopen("data.txt", "wb");if (fp != NULL) {size_t num_items = sizeof(arr) / sizeof(int);size_t num_written = fwrite(arr, sizeof(int), num_items, fp);if (num_written == num_items) {printf("写入成功!\n");} else {printf("写入失败!\n");}fclose(fp);} else {printf("无法打开文件!\n");}return 0;}在上述示例中,我们首先定义了一个整数数组arr,然后使用fopen函数打开一个名为”data.txt”的文件,并指定以二进制写入模式打开。
c语言中必不可少的函数在C语言中,有一些函数被认为是必不可少的,它们是开发者们在日常编程中经常使用的基本函数。
这些函数包括库函数、系统函数和用户自定义函数。
下面将介绍一些C语言中必不可少的函数。
1. printf(函数:这是C语言中最常用的输出函数,它用于按指定格式将数据输出到标准输出设备(通常是屏幕)上。
2. scanf(函数:与printf(函数相对应的是scanf(函数,它用于从标准输入设备(通常是键盘)获取用户输入的数据,并按指定格式存储到变量中。
3. malloc(函数:它是C语言中的动态内存分配函数。
通过malloc(函数可以在程序运行时动态地分配指定大小的内存空间,并返回一个指向该空间的指针。
4. free(函数:与malloc(函数对应的是free(函数,它用于释放通过malloc(函数分配的动态内存空间,在不再需要使用该空间时必须调用该函数。
5. strcpy(函数:它用于将一个字符串(包括字符串的结束标志'\0')复制到另一个字符串中。
6. strlen(函数:它用于获取一个字符串的长度,即该字符串的字符数(不包括结束标志'\0')。
7. strcmp(函数:它用于比较两个字符串的大小关系,若两个字符串相等则返回0,若第一个字符串大于第二个字符串则返回正数,若第一个字符串小于第二个字符串则返回负数。
8. fopen(函数:它用于打开一个文件,并返回一个指向该文件的指针,以供后续的读写操作。
9. fclose(函数:与fopen(函数对应的是fclose(函数,用于关闭一个已打开的文件。
10. fseek(函数:它用于在文件中移动文件指针的位置,从而定位文件中的某个位置进行读写操作。
11. int main(函数:在C语言程序中,必须定义一个名为main(的函数作为程序的入口点,程序的执行从main(函数开始。
除了上述库函数和系统函数外,C语言还允许开发者定义自己的函数。
C语言文件操作详解 在C语言文件操作的过程中,通常有以下几种方式: 1. 单个字符的操作: fputc 函数原型:intfputc(intc,FILE*fp); 功能:把一字节代码c写入fp指向的文件中 返回值:正常,返回c;出错,为EOF(-1) fgetc 函数原型:intfgetc(FILE*fp); 功能:从fp指向的文件中读取一字节代码 返回值:正常,返回读到的代码值;读到文件尾或出错,为EOF(-1) feof 函数原型:intfeof(FILE*fp); 功能:判断文件是否到末尾 返回值:文件未结束,返回0;文件结束,返回真(非0) 示例: #include #include voidmain() { charch; FILE*fp1=fopen("d:\\a.dat","wb");/*以写的方式打开二进制文件*/ FILE*fp2; if(NULL==fp1) { printf("Cannotopenthisfile!\n"); exit(0); } printf("pleaseinputastring:"); ch=getchar(); while(ch!='#')/*输入#号结束*/ { fputc(ch,fp1);/*依次向文件中写*/ ch=getchar(); } fflush(stdin);/*清空输入缓冲区*/ fclose(fp1); /*关闭文件*/ fp2=fopen("d:\\a.dat","rb");/*以读的方式打开二进制文件*/ if(NULL==fp2) { printf("Cannotopenthisfile!\n"); exit(0); } while(!feof(fp2)) /*判断是否到达文件末尾*/ { ch=fgetc(fp2); /*从文件中依次读取*/ putchar(ch); } putchar('\n'); fflush(stdout); /*清空输出缓冲区*/ fclose(fp2); /*关闭文件*/ } 注意: putc(ch,fp)与fputc(ch,fp)效果一致,但是putc可以作为宏替换,速度更快 getc(fp)与fgetc(fp)效果一致,但是getc可以作为宏替换,速度更快 putchar(c) 则是fputc(c,stdout) getchar() 则是fgetc(stdin) 2. 对字符串的操作: char*fgets(char*s,intn,FILE*fp) intfputs(char*s,FILE*fp) 功能: fgets:从fp指向的文件中读一个长度为n的字符串,保存到s中。其中char*s要是已经有内存空间的,通常是用数组定义的,或者用char*则要用malloc分配内存。 fputs:向fp所指向的文件中写入字符串s。 返回值: fgets:正常时返回读取字符串的首地址;出错或文件尾,返回NULL fputs:正常时返回写入的最后一个字符;出错为EOF(-1) 示例: #include #include #include voidmain() { FILE*fp; charstring[100]; if((fp=fopen("file.txt","w"))==NULL) { printf("cann'topenthisfile!\n"); exit(0); } while(strlen(gets(string))>0)/*从键盘输入字符串,回车停止*/ { fputs(string,fp); /*将字符串写入文件*/ fputs("\n",fp); /*在最后加上一个’\n’*/ } fclose(fp); if((fp=fopen("file.txt","r"))==NULL) { printf("cann'topenthisfile!\n"); exit(0); } while(fgets(string,10,fp)!=NULL)/*判断是否到达文件末尾*/ fputs(string,stdout);/*等价于puts(string);*/ fclose(fp); } 3. 对二进制形式的块读写: 函数原型: size_tfread(void*buffer,size_tsize,size_tcount,FILE*fp); size_tfwrite(void*buffer,size_tsize,size_tcount,FILE*fp); 功能:读/写数据块fread与fwrite一般用于二进制文件的输入/输出 fread:从fp所指向的文件中读取count个块,每个块的长度为size个字节,存放到以buffer为首地址的内存中。其中buffer必须已经是由内存空间的。 fwrite:从以buffer为首地址的内存中读取count个块,每个块的长度为size个字节,写入到fp所指向的文件中。 返回值:成功,返回读/写的块数;出错或文件尾,返回0 说明: buffer: 指向要输入/输出数据块的首地址的指针 size: 读/写的数据块的大小(字节数) count: 要读/写的数据块的个数 fp: 要读/写的文件指针 示例: #include #include typedefstructSTUDENT { charsNo[5]; charsName[20]; doublescore; }STUDENT; voidmain() { /*只对单个的时候*/ // intx=19; // inty=0; // FILE*fp=fopen("d:\\a.dat","wb"); // if(NULL==fp) // { // printf("Cannotopenthisfile!\n"); // exit(0); // } // fwrite(&x,sizeof(x),1,fp); // fclose(fp); // // fp=fopen("d:\\a.dat","rb"); // if(NULL==fp) // { // printf("Cannotopenthisfile!\n"); // exit(0); // } // fread(&y,sizeof(y),1,fp); // printf("%d\n",y); // fclose(fp); /*对于块的时候*/ // intx[]={1,2,3,4,5,6,7,8,9}; // inty[9]={0}; // inti; // FILE*fp=fopen("d:\\a.txt","wb"); // if(NULL==fp) // { // printf("Cannotopenthisfile!\n"); // exit(0); // } // fwrite(x,sizeof(int),sizeof(x)/sizeof(int),fp); // fclose(fp); // // fp=fopen("d:\\a.txt","rb"); // if(NULL==fp) // { // printf("Cannotopenthisfile!\n"); // exit(0); // } // fread(y,sizeof(int),sizeof(y)/sizeof(int),fp); // for(i=0;i<9;i++) // { // printf("%d",y[i]); // } // printf("\n"); // fclose(fp); /*操作一块*/ STUDENTstu[3]={ "0001","赵军",89, "0002","李千",90, "0003","张芳",100 }; STUDENTstu2; FILE*fp=fopen("d:\\b.txt","wb+"); if(NULL==fp) { printf("Cannotopenthisfile!\n"); exit(0); } fwrite(stu,sizeof(STUDENT),sizeof(stu)/sizeof(STUDENT),fp); rewind(fp); /*文件指针重新回到头*/ fseek(fp,sizeof(STUDENT),SEEK_SET);/*定位,此处跳过一条记录*/ fread(&stu2,sizeof(STUDENT),1,fp);/*从文件中读取指定大小的块*/ printf("%s-->%s-->%lf\n",stu2.sNo,stu2.sName,stu2.score); fclose(fp); } 4. 格式化操作文本文件: 函数原型: intfprintf(FILE*fp,constchar*format[,argument,…]) intfscanf(FILE*fp,constchar*format[,address,…]) 功能:按格式对文件进行读写操作。二进制的文件不要用,而改用fread和fwrite。 fprintf:输出列表中的各项数据按指定的格式写入到fp指向的文件中 fscanf:从fp所指向的文件中按指定的格式读取数据依次存放到输出列表中的各项。 返回值:成功,返回读写的个数;出错或文件尾,返回EOF(-1),eg: fprintf(fp,“%d,%6.2f”,i,t);//将i和t按%d,%6.2f格式输出到fp文件 fscanf(fp,“%d,%f”,&i,&t);//若文件中有3,4.5,则将3送入i,4.5送入t 示例: #include #include voidmain() { inta=5,b; doublex=3.5,y; charszText[20]="HelloWorld!",szNewText[20]; FILE*fp=fopen("d:\\c.txt","w+"); if(fp==NULL) { printf("Cannotopenthisfile!\n"); exit(0); } fprintf(fp,"%d%lf%s\n",a,x,szText); rewind(fp); fscanf(fp,"%d%lf%s\n",&b,&y,szNewText);