C语言文件流操作函数大全
- 格式:docx
- 大小:28.50 KB
- 文档页数:11
C语言文件操作函数13.1C语言文件1,两种文件存取方式(输入,输出方式)顺序存取直接存取2,数据的两种存放形式文本文件二进制文件13.2文件指针定义文件类型指针变量的一般形式:FILE *指针变量名;例如:FILE *fp1,*fp2;13.3打开文件在使用文件之前,需打开文件.在C里使用fopen函数打开文件.格式为:fopen(文件名,文件使用方式);此函数返回一个指向FILE类型的指针.如:FILE *fp;fp=fopen("file_1","r");如果调用成功,fp就指向file_1,否则返回为NULL,所以为了保证文件的正确使用,要进行测试.采用如下语句:If((fp=fopen("file_1","r"))==NULL){printf("Cannot open this file\n");exit(0);}最常用的文件使用方式及其含义如下:1,"r".为读而打开文本文件.(不存在则出错) 2,"rb".为读而打开二进制文件.3,"w".为写而打开文本文件.(若不存在则新建,反之,则从文件起始位置写,原内容将被覆盖) 4,"wb".为写而打开二进制文件.5,"a".为在文件后面添加数据而打开文本文件.(若不存在,则新建;反之,在原文件后追加)6,"ab".为在文件后面添加数据而打开一个二进制文件.最常用的文件使用方式及其含义如下:7,"r+".为读和写而打开文本文件.(读时,从头开始;在写数据时,新数据只覆盖所占的空间,其后不变) 8,"rb+".为读和写而打开二进制文件.只是在随后的读写时,可以由位置函数设置读和写的起始位置. 9,"w+".首先建立一个新文件,进行写操作,随后可以从头开始读.(若文件存在,原内容将全部消失) 10,"wb+".功能与"w+"同.只是在随后的读写时,可以由位置函数设置读和写的起始位置.最常用的文件使用方式及其含义如下:11,"a+".功能与"a"相同;只是在文件尾部添加新的数据后,可以从头开始读.12,"ab+".功能与"a+"相同;只是在文件尾部添加新数据之后,可以由位置函数设置开始读的起始位置. 13.4关闭文件当文件的读写操作完成之后,使用fclose函数关闭文件.格式如下:fclose(文件指针)如:fclose(fp);13.5调用fgetc和fputc函数进行输入和输出1,调用fputc函数输出一个字符功能是:将字符ch写到文件指针fp所指的文件中去.当输出成功,putc函数返回所输出的字符;否则,返回一个EOF值.EOF是在stdio.h库函数文件中定义的符号常量,其值等于-1.13.5调用fgetc和fputc函数进行输入和输出例如:把从键盘输入的文本按原样输出到名为file_1.dat文件中,用字符@作为键盘输入结束标志. #includeVoid main(){FILE *fpout;char ch;if(fpout=fpopen("file_1","w")==NULL){printf("Cannot open this file!\n");exit(0);}ch=getchar();while(ch!='@'){ fputc(ch,fpout); ch=getchar(); }fclose(fpout);}2.调用fgetc函数输入一个字符功能是:从pf指定的文件中读如一个字符,并把它作为函数值返回.例如:把一个已存在磁盘上的file_1.dat文本文件中的内容,原样输出到终端屏幕上.#includevoid main(){FILE *fpin;char ch;if((fpin=fopen("file_1.dat","r"))==NULL){ printf("Cann't open this file!\n");exit(0);} ch=fgetc(fpin);while (ch!=EOF){ putchar(ch); ch=fgetc(fpin);}fclose(fpin);}13.6判断文件结束函数feofEOF可以作为文本文件的结束标志,但不能作为二进制文件的结束符.feof函数既可以判断二进制文件,又可以判断文本文件.例:编写程序,用于把一个文本文件(源)复制到另一个文件(目的)中,源文件名和目的文件名由命令行输入.命令形式如下:可执行程序名源文件名目的文件名#includevoid filecopy(FILE* ,FILE *);void main(int argc,char *argv[]){FILE *fpin,*fpout;if(argc==3){ fpin=fopen(argv[1],"r");fpout=fopen(argv[2],"w");filecopy(fpin,fpout);fclose(fpin);fclose(fpout);}else if(argc>3)printf("The file names too many!!\n";elseprintf("There are no file names for input or output!!\n );}void filecopy(FILE *fpin,FILE *fpout){char ch;ch=getc(fpin);while(!feof(fpin)){putc(ch,fpout); ch=getc(fpin);}}13.7fscanf函数和fprintf函数1,fscanf函数fscanf只能从文本文件中按格式输入,和scanf函数相似,只不过输入的对象是磁盘上文本文件中的数据.调用形式为:fscanf(文件指针,格式控制字符串,输入项表)例如:fscanf(fp,"%d%d",&a,&b);fscanf(stdin,"%d%d",&a,&b);等价于scanf("%d%d",&a,&b);3.fprintf函数fprintf函数按格式将内存中的数据转换成对应的字符,并以ASCII代码形式输出到文本文件中.Fprintf 函数和printf函数相似,只是将输出的内容按格式存放到磁盘的文本文件中.调用形式如下:fprintf(文件指针,格式控制字符串,输出项表)如:fprintf(fp,"%d %d",x,y);以下语句 fprintf(stdout,"%d %d",x,y)13.8fgets函数和fputs函数1,fgets函数fgets函数用来从文件中读入字符串.调用形式如下: fgets(str,n,fp);函数功能是:从fp所指文件中读入n-1个字符放入str 为起始地址的空间内;如果在未读满n-1个字符时,则遇到换行符或一个EOF结束本次读操作,并已str作为函数值返回. 13.8fgets函数和fputs函数2,fputs函数fput函数把字符串输出到文件中.函数调用形式如下: fputs(str,fp);注意:为了便于读入,在输出字符串时,应当人为的加诸如"\n"这样的字符串.#include <stdio.h>#include <iostream>int main(int argc, char *argv[]){char arr[10] ;char *ap = "hello!" ;FILE *fp ;if ((fp = fopen("hello.txt", "wt+")) == NULL) {printf("error!") ;exit(1) ;}fputs(ap, fp) ;rewind(fp) ; //fgets(arr, 10, fp) ;printf("%s\n", arr) ;fclose(fp) ;return 0 ;}13.9fread函数和fwrite函数例如有如下结构体:struct st{char num[8];float mk[5];}pers[30];以下循环将把这30个元素中的数据输出到fp所指文件中.for(i=0;i<30;i++)fwrite(&pers[i],sizeof(struct st),1,fp);13.9fread函数和fwrite函数以下语句从fp所指的文件中再次将每个学生数据逐个读入到pers数组中.i=0;fread(&pers[i],sizeof(struct st),1,fp);while(!feof(fp)){ i++;fread(&pers[i],sizeof(struct st),1,fp);}13.10文件定位函数1,fseek函数fseek函数用来移动文件位置指针到指定的位置上,接着的读或写操作将从此位置开始.函数的调用形式如下:fseek(pf,offset,origin)pf:文件指针offset:以字节为单位的位移量,为长整形.origin:是起始点,用来指定位移量是以哪个位置为基准的.1,fseek函数位移量的表示方法标识符数字代表的起始点SEEK_SET 0 文件开始SEEK_END 2 文件末尾SEEK_CUR 1 文件当前位置假设pf已指向一个二进制文件,则;fseek(pf,30L,SEEK_SET)fseek(pf,-10L*sizeof(int),SEEK_END)对于文本文件,位移量必须是0;如:fseek(pf,0L,SEEK_SET)fseek(pf,0L,SEEK_END)2. ftell函数ftell函数用以获得文件当前位置指针的位置,函数给出当前位置指针相对于文件开头的字节数.如;long t;t=ftell(pf);当函数调用出错时,函数返回-1L.我们可以通过以下方式来测试一个文件的长度: fseek(fp,0L,SEEK_END);t=ftell(fp);3.rewind函数调用形式为:rewind(pf);函数没有返回值.函数的功能是使文件的位置指针回到文件的开头.13.10文件应用在磁盘上的test.txt文件中放有10个不小于2的正整数,用函数调用方式编写程序.要求实现:1,在被调函数prime中,判断和统计10个整数中的素数以及个数.2,在主函数中将全部素数追加到磁盘文件test.txt的尾部,同时输出到屏幕上.#include#includeInt prime(int a[],int n){int I,j,k=0,flag=0;for(i=0;i { for(j=2;j if(a[i]%j==0){ flag=0; break;}else flag=1;if(flag){a[k]=a[i];k++;}}return k; }void main(){int n,I,a[10];FILE *fp;fp=fopen("test1-2.txt","r+");for(n=0;n<10;n++)fscanf(fp,"%d",&a[n]);n=prime(a,n);fseek(fp,o,2);for(i=0;i {printf("%3d",a[i]);fprintf(fp,"%3d",a[i]);}fclose(fp);}文件操作函数全clearerr(清除文件流的错误旗标)相关函数feof表头文件#include<stdio.h>定义函数void clearerr(FILE * stream);函数说明clearerr()清除参数stream指定的文件流所使用的错误旗标。
c语言file用法在C语言中,文件操作是编程中常见的一项任务。
使用文件,我们可以存储和读取数据,例如配置信息、日志数据等。
C语言提供了许多函数来处理文件,包括文件的打开、读取、写入和关闭等操作。
下面是一些关于如何在C语言中使用文件的例子。
首先,我们需要包含头文件`stdio.h`,它包含了文件操作的函数和宏定义。
```c#include <stdio.h>```1. 打开文件使用`fopen`函数打开一个文件。
这个函数需要两个参数:第一个参数是文件路径,第二个参数是打开文件的模式。
常见的模式有:`"r"`表示读取模式,`"w"`表示写入模式,如果文件不存在则创建,`"a"`表示追加模式,如果文件不存在则创建。
```cFILE *fp = fopen("file.txt", "r");if (fp == NULL) {printf("打开文件失败!\n");return 1;}```2. 读取文件使用`fscanf`函数从文件中读取数据。
这个函数的用法和`scanf`函数类似,只不过它是从文件中读取数据而不是从标准输入中读取。
```cchar buffer[100];while (fscanf(fp, "%s", buffer) != EOF) {printf("%s\n", buffer);}```3. 写入文件使用`fprintf`函数向文件中写入数据。
这个函数的用法和`printf`函数类似,只不过它是将数据写入到文件中而不是输出到标准输出中。
```cFILE *fp = fopen("file.txt", "w");if (fp == NULL) {printf("打开文件失败!\n");return 1;}fprintf(fp, "Hello, world!");fclose(fp);```4. 关闭文件使用`fclose`函数关闭一个文件。
C语言库函数大全absread()读磁盘绝对扇区函数原形:int absread(int drive,int num,int sectnum,void *buf)功能:从drive指定的驱动器磁盘上,sectnum指定的逻辑扇区号开始读取(通过DOS中断0x25读取)num个(最多64K个)扇区的内容,储存于buf所指的缓冲区中。
参数:drive=0对应A盘,drive=1对应B盘。
返回值:0:成功;-1:失败。
头文件:dos.habswrite()写磁盘绝对扇区函数原形:int abswrite(int drive,int nsects,int lsect,void *buffer)drive=0(A驱动器)、1(B驱动器)、nsects=要写的扇区数(最多64K个);lsect=起始逻辑扇区号;buffer=要写入数据的内存起始地址。
功能:将指定内容写入(调用DOS中断0x26)磁盘上的指定扇区,即使写入的地方是磁盘的逻辑结构、文件、FAT表和目录结构所在的扇区,也照常进行。
返回值:0:成功;-1:失败。
头文件:dos.hatof()将字符串转换成浮点数的函数原形:double atof(const char *s)功能:把s所指向的字符串转换成double类型。
s格式为:符号数字.数字 E符号数字返回值:字符串的转换值。
头文件:math.h、stdlib.hatoi()将字符串转换成整型数的函数原形:int atoi(const char *s)功能:把s所指向的字符串转换成int类型。
s格式为:符号数字返回值:字符串的转换值。
若出错则返回0。
头文件:stdlib.hatol()将字符串转换成长整型数的函数原形:long atol(const char *s)功能:把s所指向的字符串转换成long int类型。
s格式为:符号数字返回值:字符串的转换值。
若出错则返回0。
头文件:stdlib.hbcd()把一个数转换成对应的BCD码的函数原形:bcd bcd(int x)bcd bcd(double x)bcd bcd(double x,int decimals)注意:BCD码的精度可达17位。
c文件读写函数C文件读写函数是在C语言中用于处理文件的函数。
它们允许我们从文件中读取数据或向文件中写入数据。
在本文中,我们将介绍一些常用的C文件读写函数,并讨论它们的用法和注意事项。
1. fopen函数:用于打开一个文件,并返回一个指向该文件的指针。
它接受两个参数,第一个参数是要打开的文件的路径和名称,第二个参数是打开文件的模式(如只读、写入等)。
打开文件成功后,该函数将返回一个指向文件的指针,否则返回NULL。
2. fclose函数:用于关闭一个打开的文件。
它接受一个参数,即要关闭的文件的指针。
关闭文件后,该指针将不再有效。
3. fgetc函数:用于从文件中读取一个字符,并将该字符作为整数返回。
它接受一个参数,即要读取的文件的指针。
4. fputc函数:用于将一个字符写入文件。
它接受两个参数,第一个参数是要写入的字符,第二个参数是要写入的文件的指针。
5. fgets函数:用于从文件中读取一行字符,并将它们保存在一个字符串中。
它接受三个参数,第一个参数是保存读取字符的字符串的指针,第二个参数是要读取的最大字符数,第三个参数是要读取的文件的指针。
6. fputs函数:用于将一个字符串写入文件。
它接受两个参数,第一个参数是要写入的字符串,第二个参数是要写入的文件的指针。
7. fread函数:用于从文件中读取一定数量的数据,并将它们保存在一个缓冲区中。
它接受四个参数,第一个参数是保存读取数据的缓冲区的指针,第二个参数是每个数据项的大小(以字节为单位),第三个参数是要读取的数据项的数量,第四个参数是要读取的文件的指针。
8. fwrite函数:用于将一定数量的数据从一个缓冲区写入文件。
它接受四个参数,第一个参数是保存要写入数据的缓冲区的指针,第二个参数是每个数据项的大小(以字节为单位),第三个参数是要写入的数据项的数量,第四个参数是要写入的文件的指针。
9. fseek函数:用于在文件中定位到指定的位置。
它接受三个参数,第一个参数是要定位的文件的指针,第二个参数是要移动的字节数,第三个参数是起始位置(如文件开头、当前位置、文件末尾)。
归纳整理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语言中的文件流操作函数主要有以下几个:1. fopen:打开文件并返回一个文件指针。
语法为:`FILE*fopen(const char* filename, const char* mode);` 其中,filename为文件路径,mode为打开文件的模式,有"r"(只读)、"w"(只写)、"a"(追加)等。
2. fclose:关闭文件。
语法为:`int fclose(FILE* stream);` 其中,stream为文件指针。
3. fread:从文件中读取数据。
语法为:`size_t fread(void* ptr, size_t size, size_t count, FILE* stream);` 其中,ptr为指向要读取数据的缓冲区指针,size为每个数据项的字节数,count为要读取的数据项数量,stream为文件指针。
4. fwrite:向文件中写入数据。
语法为:`size_t fwrite(const void* ptr, size_t size, size_t count, FILE* stream);` 其中,ptr 为指向要写入数据的缓冲区指针,size为每个数据项的字节数,count为要写入的数据项数量,stream为文件指针。
5. fprintf:向文件中写入格式化数据。
语法为:`intfprintf(FILE* stream, const char* format, ...);` 其中,stream为文件指针,format为格式化字符串,后面可以跟上对应的参数。
6. fscanf:从文件中读取格式化数据。
语法为:`int fscanf(FILE* stream, const char* format, ...);` 其中,stream为文件指针,format为格式化字符串,后面可以跟上对应的参数。
C语言常用函数包括:1.printf函数:用于在控制台输出数据。
2.scanf函数:用于从控制台读取用户输入的数据。
3.strlen函数:用于计算字符串的长度。
4.strcmp函数:用于比较两个字符串的大小。
5.strcpy函数:用于将一个字符串复制到另一个字符串中。
6.strcat函数:用于将一个字符串连接到另一个字符串的末尾。
7.strchr函数:用于查找字符串中指定字符的位置。
8.strstr函数:用于查找字符串中指定子串的位置。
9.atoi函数:用于将字符串转换为整数。
10.atof函数:用于将字符串转换为浮点数。
11.malloc函数:用于动态分配内存空间。
12.free函数:用于释放动态分配的内存空间。
13.memcpy函数:用于将一段内存区域的数据复制到另一段内存区域。
14.memset函数:用于将一段内存区域的数据设置为指定的值。
15.abs函数:用于计算整数的绝对值。
16.rand函数:用于生成随机数。
17.srand函数:用于设置随机数生成器的种子。
18.time函数:用于获取当前的系统时间。
19.localtime函数:用于将时间戳转换为本地时间。
20.strtol函数:用于将字符串转换为长整型数。
21.strtod函数:用于将字符串转换为双精度浮点数。
22.fprintf函数:用于将数据格式化输出到文件中。
23.fscanf函数:用于从文件中读取格式化的数据。
24.fgets函数:用于从文件中读取一行数据。
25.fputs函数:用于将数据写入文件中。
26.fopen函数:用于打开文件。
27.fclose函数:用于关闭文件。
28.feof函数:用于判断文件是否已经到达文件末尾。
29.ferror函数:用于判断文件操作是否发生错误。
30.fprintf函数:用于将数据格式化输出到文件中。
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()所返回之文件指针。
功能: 异常终止一个进程用法: void abort(void)函数名: abs功能: 求整数的绝对值用法: int abs(int i)函数名: absread, abswirte功能: 绝对磁盘扇区读、写数据用法: int absread(int drive, int nsects, int sectno, void *buffer) int abswrite(int drive, int nsects, in tsectno, void *buffer函数名: access功能: 确定文件的访问权限用法: int access(const char *filename, int amode)函数名: acos功能:反余弦函数用法: double acos(double x)函数名: allocmem功能: 分配DOS存储段用法:int allocmem(unsigned size, unsigned *seg)函数名: arc功能: 画一弧线用法:void far arc(int x, int y, int stangle, int endangle, int radius)函数名: asctime功能: 转换日期和时间为ASCII码用法:char *asctime(const struct tm *tblock)函数名: asin功能:反正弦函数用法: double asin(double x)函数名: assert功能: 测试一个条件并可能使程序终止用法:void assert(int test)函数名: atan功能: 反正切函数用法: double atan(double x)功能: 计算Y/X的反正切值用法: double atan2(double y, double x)函数名:atexit功能: 注册终止函数用法: int atexit(atexit_t func)函数名: atof功能: 把字符串转换成浮点数用法:double atof(const char *nptr)函数名: atoi功能: 把字符串转换成长整型数用法: int atoi(const char *nptr)函数名: atol功能: 把字符串转换成长整型数用法: long atol(const char *nptr)函数名: bar功能: 画一个二维条形图用法: void far bar(int left, int top, int right, int bottom)函数名: bar3d功能: 画一个三维条形图用法:void far bar3d(int left, int top, int right, int bottom,int depth, int topflag)函数名: bdos功能: DOS系统调用用法: int bdos(int dosfun, unsigned dosdx, unsigned dosal)函数名:bdosptr功能:DOS系统调用用法: int bdosptr(int dosfun, void *argument, unsigned dosal)函数名:bioscom功能: 串行I/O通信用法:int bioscom(int cmd, char abyte, int port)函数名:biosdisk功能: 软硬盘I/O用法:int biosdisk(int cmd, int drive, int head, int track, int sectorint nsects, void *buffer)函数名:biosequip功能: 检查设备用法:int biosequip(void)函数名:bioskey功能: 直接使用BIOS服务的键盘接口用法:int bioskey(int cmd)函数名:biosmemory功能: 返回存储块大小用法:int biosmemory(void)函数名:biosprint功能: 直接使用BIOS服务的打印机I/O用法:int biosprint(int cmd, int byte, int port)函数名:biostime功能: 读取或设置BIOS时间用法: long biostime(int cmd, long newtime)函数名: brk功能: 改变数据段空间分配用法:int brk(void *endds)函数名:bsearch功能: 二分法搜索用法:void *bsearch(const void *key, const void *base, size_t *nelem, size_t width, int(*fcmp)(const void *, const *))函数名: cabs功能: 计算复数的绝对值用法: double cabs(struct complex z);函数名:calloc功能:分配主存储器用法:void *calloc(size_t nelem, size_t elsize);函数名: ceil功能: 向上舍入用法: double ceil(double x);函数名: cgets功能: 从控制台读字符串用法: char *cgets(char *str)函数名:chdir功能: 改变工作目录用法: int chdir(const char *path);函数名:_chmod, chmod功能: 改变文件的访问方式用法: int chmod(const char *filename, int permiss);函数名:chsize功能: 改变文件大小用法: int chsize(int handle, long size);函数名: circle功能: 在给定半径以(x, y)为圆心画圆用法: void far circle(int x, int y, int radius);函数名: cleardevice功能: 清除图形屏幕用法: void far cleardevice(void);函数名:clearerr功能: 复位错误标志用法:void clearerr(FILE *stream);函数名: clearviewport功能: 清除图形视区用法: void far clearviewport(void);函数名:_close, close功能: 关闭文件句柄用法:int close(int handle);函数名: clock功能:确定处理器时间用法: clock_t clock(void);函数名:closegraph功能: 关闭图形系统用法: void far closegraph(void);函数名:clreol功能: 在文本窗口中清除字符到行末用法:void clreol(void)函数名:clrscr功能: 清除文本模式窗口用法:void clrscr(void);函数名: coreleft功能: 返回未使用内存的大小用法:unsigned coreleft(void);函数名: cos功能: 余弦函数用法:double cos(double x);函数名:cosh功能: 双曲余弦函数用法: dluble cosh(double x);函数名: country功能: 返回与国家有关的信息用法: struct COUNTRY *country(int countrycode, struct country *country); 函数名: cprintf功能: 送格式化输出至屏幕用法:int cprintf(const char *format[, argument, ...]);函数名: cputs功能: 写字符到屏幕用法: void cputs(const char *string);函数名: _creat creat功能: 创建一个新文件或重写一个已存在的文件用法: int creat (const char *filename, int permiss)函数名:creatnew功能: 创建一个新文件用法:int creatnew(const char *filename, int attrib);函数名: cscanf功能: 从控制台执行格式化输入用法:int cscanf(char *format[,argument, ...]);函数名: ctime功能: 把日期和时间转换为字符串用法:char *ctime(const time_t *time);功能: 设置Ctrl-Break处理程序用法: void ctrlbrk(*fptr)(void);函数名: delay功能: 将程序的执行暂停一段时间(毫秒)用法: void delay(unsigned milliseconds);函数名: delline功能: 在文本窗口中删去一行用法: void delline(void);函数名:detectgraph功能: 通过检测硬件确定图形驱动程序和模式用法: void far detectgraph(int far *graphdriver, int far *graphmode); 函数名: difftime功能: 计算两个时刻之间的时间差用法: double difftime(time_t time2, time_t time1);函数名: disable功能: 屏蔽中断用法:void disable(void);函数名: div功能: 将两个整数相除, 返回商和余数用法:div_t (int number, int denom);函数名: dosexterr功能: 获取扩展DOS错误信息用法:int dosexterr(struct DOSERR *dblkp);函数名: dostounix功能: 转换日期和时间为UNIX时间格式用法: long dostounix(struct date *dateptr, struct time *timeptr);函数名: drawpoly功能: 画多边形用法: void far drawpoly(int numpoints, int far *polypoints);函数名:dup功能: 复制一个文件句柄用法: int dup(int handle);函数名:dup2功能: 复制文件句柄用法: int dup2(int oldhandle, int newhandle);功能: 把一个浮点数转换为字符串用法: char ecvt(double value, int ndigit, int *decpt, int *sign);函数名: ellipse功能: 画一椭圆用法:void far ellipse(int x, int y, int stangle, int endangle,int xradius, int yradius);函数名: enable功能: 开放硬件中断用法: void enable(void);函数名: eof功能: 检测文件结束用法: int eof(int *handle);函数名: exec...功能: 装入并运行其它程序的函数用法: int execl(char *pathname, char *arg0, arg1, ..., argn, NULL); int execle(char *pathname, char *arg0, arg1, ..., argn, NULL,char *envp[]);int execlp(char *pathname, char *arg0, arg1, .., NULL);int execple(char *pathname, char *arg0, arg1, ..., NULL,char *envp[]);int execv(char *pathname, char *argv[]);int execve(char *pathname, char *argv[], char *envp[]);int execvp(char *pathname, char *argv[]);int execvpe(char *pathname, char *argv[], char *envp[]);函数名:exit功能: 终止程序用法: void exit(int status);函数名: exp功能: 指数函数用法: double exp(double x);函数名: gcvt功能: 把浮点数转换成字符串用法: char *gcvt(double value, int ndigit, char *buf);函数名: geninterrupt功能: 产生一个软中断函数名: getarccoords功能: 取得最后一次调用arc的坐标用法: void far getarccoords(struct arccoordstype far *arccoords); 函数名: getaspectratio功能: 返回当前图形模式的纵横比用法: void far getaspectratio(int far *xasp, int far *yasp);函数名: getbkcolor功能: 返回当前背景颜色用法: int far getbkcolor(void);函数名: getc功能: 从流中取字符用法: int getc(FILE *stream);函数名: getcbrk功能: 获取Control_break设置用法: int getcbrk(void);函数名: getch功能: 从控制台无回显地取一个字符用法: int getch(void);函数名: getchar功能: 从stdin流中读字符用法: int getchar(void);函数名: getche功能: 从控制台取字符(带回显)用法: int getche(void);函数名: getcolor功能: 返回当前画线颜色用法: int far getcolor(void);函数名: getcurdir功能: 取指定驱动器的当前目录用法: int getcurdir(int drive, char *direc);函数名: getcwd功能: 取当前工作目录用法: char *getcwd(char *buf, int n);函数名: getdate功能: 取DOS日期函数名: getdefaultpalette功能: 返回调色板定义结构用法: struct palettetype *far getdefaultpalette(void);函数名: getdisk功能: 取当前磁盘驱动器号用法: int getdisk(void);函数名: getdrivername功能: 返回指向包含当前图形驱动程序名字的字符串指针用法: char *getdrivename(void);函数名: getdta功能: 取磁盘传输地址用法: char far *getdta(void);函数名: getenv功能: 从环境中取字符串用法: char *getenv(char *envvar);函数名: getfat, getfatd功能: 取文件分配表信息用法: void getfat(int drive, struct fatinfo *fatblkp);函数名: getfillpattern功能: 将用户定义的填充模式拷贝到内存中用法: void far getfillpattern(char far *upattern);函数名: getfillsettings功能: 取得有关当前填充模式和填充颜色的信息用法: void far getfillsettings(struct fillsettingstype far *fillinfo); 函数名: getftime功能: 取文件日期和时间用法: int getftime(int handle, struct ftime *ftimep);函数名: getgraphmode功能: 返回当前图形模式用法: int far getgraphmode(void);函数名: getftime功能: 取文件日期和时间用法: int getftime(int handle, struct ftime *ftimep);函数名: getgraphmode功能: 返回当前图形模式用法: int far getgraphmode(void);函数名: getimage功能: 将指定区域的一个位图存到主存中用法: void far getimage(int left, int top, int right, int bottom,void far *bitmap);函数名: getlinesettings功能: 取当前线型、模式和宽度用法: void far getlinesettings(struct linesettingstype far *lininfo): 函数名: getmaxx功能: 返回屏幕的最大x坐标用法: int far getmaxx(void);函数名: getmaxy功能: 返回屏幕的最大y坐标用法: int far getmaxy(void);函数名: getmodename功能: 返回含有指定图形模式名的字符串指针用法: char *far getmodename(int mode_name);函数名: getmoderange功能: 取给定图形驱动程序的模式范围用法: void far getmoderange(int graphdriver, int far *lomode,int far *himode);函数名: getpalette功能: 返回有关当前调色板的信息用法: void far getpalette(struct palettetype far *palette);函数名: getpass功能: 读一个口令用法: char *getpass(char *prompt);函数名: getpixel功能: 取得指定像素的颜色用法: int far getpixel(int x, int y);函数名: gets功能: 从流中取一字符串用法: char *gets(char *string);函数名: gettext功能: 将文本方式屏幕上的文本拷贝到存储区用法: int gettext(int left, int top, int right, int bottom, void *destin);函数名: gettextinfo功能: 取得文本模式的显示信息用法: void gettextinfo(struct text_info *inforec);函数名: gettextsettings功能: 返回有关当前图形文本字体的信息用法: void far gettextsettings(struct textsettingstype far *textinfo); 函数名: gettime功能: 取得系统时间用法: void gettime(struct time *timep);函数名: getvect功能: 取得中断向量入口用法: void interrupt(*getvect(int intr_num));函数名: getverify功能: 返回DOS校验标志状态用法: int getverify(void);函数名: getviewsetting功能: 返回有关当前视区的信息用法: void far getviewsettings(struct viewporttype far *viewport); 函数名: getw功能: 从流中取一整数用法: int getw(FILE *strem);函数名: getx功能: 返回当前图形位置的x坐标用法: int far getx(void);函数名: gety功能: 返回当前图形位置的y坐标用法: int far gety(void);函数名: gmtime功能: 把日期和时间转换为格林尼治标准时间(GMT)用法: struct tm *gmtime(long *clock);函数名: gotoxy功能: 在文本窗口中设置光标用法: void gotoxy(int x, int y);函数名: gotoxy功能: 在文本窗口中设置光标用法: void gotoxy(int x, int y);函数名: graphdefaults功能: 将所有图形设置复位为它们的缺省值用法: void far graphdefaults(void);函数名: grapherrormsg功能: 返回一个错误信息串的指针用法: char *far grapherrormsg(int errorcode);函数名: graphresult功能: 返回最后一次不成功的图形操作的错误代码用法: int far graphresult(void);函数名: _graphfreemem功能: 用户可修改的图形存储区释放函数用法: void far _graphfreemem(void far *ptr, unsigned size);函数名: _graphgetmem功能: 用户可修改的图形存储区分配函数用法: void far *far _graphgetmem(unsigned size);函数名: harderr功能: 建立一个硬件错误处理程序用法: void harderr(int (*fptr)());函数名: hardresume功能: 硬件错误处理函数用法: void hardresume(int rescode);函数名: highvideo功能: 选择高亮度文本字符用法: void highvideo(void);函数名: hypot功能: 计算直角三角形的斜边长用法: double hypot(double x, double y);函数名: imagesize功能: 返回保存位图像所需的字节数用法: unsigned far imagesize(int left, int top, int right, int bottom); 函数名: initgraph功能: 初始化图形系统用法: void far initgraph(int far *graphdriver, int far *graphmode函数名: inport功能: 从硬件端口中输入用法: int inp(int protid);函数名: insline功能: 在文本窗口中插入一个空行用法: void insline(void);函数名: installuserdriver功能: 安装设备驱动程序到BGI设备驱动程序表中用法: int far installuserdriver(char far *name, int (*detect)(void));函数名: installuserfont功能: 安装未嵌入BGI系统的字体文件(CHR)用法: int far installuserfont(char far *name);函数名: int86功能: 通用8086软中断接口用法: int int86(int intr_num, union REGS *inregs, union REGS *outregs) 函数名: int86x功能: 通用8086软中断接口用法: int int86x(int intr_num, union REGS *insegs, union REGS *outregs, 函数名: intdos功能: 通用DOS接口用法: int intdos(union REGS *inregs, union REGS *outregs);函数名: intdosx功能: 通用DOS中断接口用法: int intdosx(union REGS *inregs, union REGS *outregs,struct SREGS *segregs);函数名: intr功能: 改变软中断接口用法: void intr(int intr_num, struct REGPACK *preg);函数名: ioctl功能: 控制I/O设备用法: int ioctl(int handle, int cmd[,int *argdx, int argcx]);函数名: isatty功能: 检查设备类型用法: int isatty(int handle);函数名: itoa功能: 把一整数转换为字符串用法: char *itoa(int value, char *string, int radix);函数名: kbhit功能: 检查当前按下的键用法: int kbhit(void);函数名: keep功能: 退出并继续驻留用法: void keep(int status, int size);函数名: kbhit功能: 检查当前按下的键用法: int kbhit(void);函数名: keep功能: 退出并继续驻留用法: void keep(int status, int size);函数名: labs用法: long labs(long n);函数名: ldexp功能: 计算value*2的幂用法: double ldexp(double value, int exp);函数名: ldiv功能: 两个长整型数相除, 返回商和余数用法: ldiv_t ldiv(long lnumer, long ldenom);函数名: lfind功能: 执行线性搜索用法: void *lfind(void *key, void *base, int *nelem, int width,int (*fcmp)());函数名: line功能: 在指定两点间画一直线用法: void far line(int x0, int y0, int x1, int y1);函数名: linerel功能: 从当前位置点(CP)到与CP有一给定相对距离的点画一直线用法: void far linerel(int dx, int dy);函数名: localtime功能: 把日期和时间转变为结构用法: struct tm *localtime(long *clock);函数名: lock功能: 设置文件共享锁用法: int lock(int handle, long offset, long length);函数名: log功能: 对数函数ln(x)用法: double log(double x);函数名: log10功能: 对数函数log用法: double log10(double x);函数名: longjump功能: 执行非局部转移用法: void longjump(jmp_buf env, int val);函数名: lowvideo功能: 选择低亮度字符用法: void lowvideo(void);函数名: lrotl, _lrotl功能: 将无符号长整型数向左循环移位用法: unsigned long lrotl(unsigned long lvalue, int count);unsigned long _lrotl(unsigned long lvalue, int count);函数名: lsearch功能: 线性搜索用法: void *lsearch(const void *key, void *base, size_t *nelem,size_t width, int (*fcmp)(const void *, const void *));函数名: lseek功能: 移动文件读/写指针用法: long lseek(int handle, long offset, int fromwhere);main()主函数每一C 程序都必须有一main() 函数, 可以根据自己的爱好把它放在程序的某个地方。
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语言函数fopen函数简介函数功能:打开一个文件函数原型:FILE * fopen(const char * path,const char * mode);相关函数:open,fclose,fopen_s[1],_wfopen所需库:<stdio.h>返回值:文件顺利打开后,指向该流的文件指针就会被返回。
若果文件打开失败则返回NULL,并把错误代码存在errno 中。
一般而言,打开文件后会作一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以在fopen()后请作错误判断及处理。
参数说明:参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
mode有下列几种形态字符串:r 打开只读文件,该文件必须存在。
r+ 打开可读写的文件,该文件必须存在。
rb+ 读写打开一个二进制文件,只允许读写数据。
rt+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。
若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。
若文件不存在则建立该文件。
a 以附加的方式打开只写文件。
若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
(EOF符保留)a+ 以附加方式打开可读写的文件。
若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
(原来的EOF符不保留)wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。
C语言函数大全(C)C语言是一种非常重要的编程语言,它是一种结构化,通用和高效的编程语言,适用于各种不同的应用领域。
C语言的重要性在于它已经成为了许多操作系统,编译器,数据库,GUI(图形用户界面)和其他高级语言的实现基础。
在本文中,我们将介绍C语言中的一些重要的函数,并简要描述它们的作用。
1. printf()该函数可以将输出的字符串和变量打印到屏幕上。
例如:printf("This is a string");,字符串“This is a string”将被打印到屏幕上。
2. scanf()该函数可以从屏幕上读取输入,并将其存储到变量中。
例如:scanf("%d", &x);,这将从屏幕上读取一个整数并将其存储在x变量中。
3. strlen()该函数可以计算字符串的长度(不包括空字符),并返回结果。
例如:strlen(str);,这将返回字符串“str”的长度。
4. strcmp()该函数可以比较两个字符串。
如果字符串相等则返回0,如果第一个字符串小于第二个字符串则返回一个负数,如果第一个字符串大于第二个字符串则返回一个正数。
例如:strcmp(str1, str2);,这将比较字符串“str1”和“str2”。
7. getchar()该函数从标准输入流中获取一个字符,并将其作为返回值返回。
例如:char c = getchar();,这将从键盘上获取一个字符并将其存储在变量“c”中。
8. putchar()该函数将一个字符输出到标准输出流中。
例如:putchar('a');,这将把字符‘a’输出到控制台。
9. isalpha()该函数检查给定的字符是否为字母。
如果是则返回非零值,否则返回0。
例如:isalpha('a');,这将返回非零值,因为‘a’是一个字母。
11. toupper()该函数返回给定字符的大写形式。
C语言函数大全函数名:abort功能:异常终止一个进程用法:void abort(void)函数名:abs功能:求整数的绝对值用法:int abs(int i)函数名:absread。
abswirte功能:绝对磁盘扇区读、写数据用法:int absread(int drive。
int nsects。
int sectno。
void *buffer)int abswrite(int drive。
int nsects。
in tsectno。
void *buffer函数名:access功能:确定文件的访问权限用法:int access(const char *filename。
int amode)函数名:acos功能:反余弦函数用法:double acos(double x)函数名:allocmem功能:分配DOS存储段用法:int allocmem(unsigned size。
unsigned *seg)函数名:arc功能:画一弧线用法:void far arc(int x。
int y。
int stangle。
int endangle。
int radius)函数名:asctime功用:转换日期和工夫为ASCII码用法:char *asctime(const struct tm *tblock)函数名:asin功用:归正弦函数用法:double asin(double x)函数名:assert功能:测试一个条件并可能使程序终止用法:void assert(int test)函数名:XXX功用:归正切函数用法:double atan(double x)函数名:atan2功用:计较Y/X的归正切值用法:double atan2(double y。
double x)函数名:atexit功能:注册终止函数用法:int atexit(atexit_t func)函数名:atof功用:把字符串转换成浮点数用法:double atof(const char *nptr)函数名:atoi功用:把字符串转换发展整型数用法:int atoi(const char *nptr)函数名:atol功用:把字符串转换发展整型数用法:long atol(const char *nptr)函数名:bar功用:画一个二维条形图用法:void far bar(int left。
在C语言中,stream通常是指文件流(file stream),用于处理文件的输入输出操作。
C语言中的文件流可以通过标准库中的文件操作函数进行使用。
以下是一些常用的文件流操作函数:1. fopen()函数:用于打开一个文件,并返回一个指向该文件的指针。
语法为:FILE *fopen(const char *filename, const char *mode);2. fclose()函数:用于关闭一个打开的文件。
语法为:int fclose(FILE *stream);3. fgetc()函数:用于从文件中读取一个字符。
语法为:int fgetc(FILE *stream);4. fgets()函数:用于从文件中读取一行数据。
语法为:char *fgets(char *str, int n, FILE *stream);5. fputc()函数:用于将一个字符写入文件中。
语法为:int fputc(int c, FILE *stream);6. fputs()函数:用于将一行数据写入文件中。
语法为:int fputs(const char *str, FILE *stream);7. fread()函数:用于从文件中读取指定数量的数据块。
语法为:size_t fread(void *ptr, size_t size, size_t count, FILE *stream);8. fwrite()函数:用于将指定数量的数据块写入文件中。
语法为:size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);在使用文件流时,需要注意以下几点:1. 打开文件时需要指定正确的文件路径和打开模式(例如:r表示只读,w表示写入,a表示追加等)。
2. 在使用文件流时,需要确保文件已经被正确关闭,以避免资源泄漏和文件损坏的问题。
3. 在读取或写入文件时,需要注意数据类型的大小和顺序等问题,以避免出现读写错误或数据损坏的情况。
c语言操作函数
C语言中的操作函数包括各种数据类型的处理函数、字符串处理函数、文件操作函数等,它们是C语言编程中不可或缺的一部分。
其中,数据类型的处理函数包括数值类型的处理函数和字符类型的处理函数,如int、float、double、char等类型的处理函数,包括转换、比较、运算等功能;字符串处理函数包括字符串常量处理函数和字符串变量处理函数,如strlen、strcpy、strcat等函数,用于字符串的复制、拼接、查找等功能;文件操作函数包括文件的打开、关闭、读写、复制等操作,如fopen、fclose、fread、fwrite等函数,用于文件的读写和管理等功能。
通过熟练掌握这些操作函数,可以大大提高C语言编程的效率和代码的可读性。
- 1 -。
C语言文件操作函数freopen详解今天做USACO 用到了文件的操作。
之前做USACO只是格式化的些写freopen(xxx.in,r,stdin) 和freopen(xxx.out,w,stdout) 百度百科上是这么介绍的:函数名: freopen功能: 替换一个流,或者说重新分配文件指针,实现重定向。
如果stream流已经打开,则先关闭该流。
如果该流已经定向,则freopen将会清除该定向。
此函数一般用于将一个指定的文件打开一个预定义的流:标准输入、标准输出或者标准出错。
用法: FILE *freopen(const char *filename,const char *type, FILE *stream);头文件:stdio.h例1:复制代码代码如下:#include#includeint main(){if(freopen(file.txt,w,stdout)==NULL)fprintf(stderr,errorn);printf(This is in the filen); //这句话会在file.txt中显示。
fclose(stdout); //使用fclose()函数就可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区。
return 0;}例2:复制代码代码如下://首先在同路径下创建一个in.txt文本文档写入若干数字#include#incll fclose(stdout);return 0;}freopen(CON,w,stdout) 表示在控制台窗口上写入数据;例3:复制代码代码如下:#include#includeint main(){// FILE *stream;freopen(file1.txt,w,stdout);printf(this is in file1.txt); // 这句话在file1.txt中显示freopen(CON,w,stdout);printf(And this is in command.n); //这句话在控制台上显示return 0;}例5:关于fread 可以通过下面的程序,一看就知道什么意思了复制代码代码如下:#include#includeint main(){FILE *streamchar s[102400]=;if((stream=freopen(file.txt,r,stdin))==null)exit(-1);fread(s,1,1024,stdin); // 读取file.txt中1到1024位,放入s 中,我是这么理解的printf(%sn,s);return 0;}。
C语言文件文件操作总结在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O 文件操作,下面就分别介绍之。
一、流式文件操作这种方式的文件操作有一个重要的结构FILE,FILE在std io.h中定义如下:type def s truct {in t lev el;u nsign ed fl ags;charfd;u nsign ed ch ar ho ld;i nt bs ize;unsig ned c har _FAR *buffe r;un signe d cha r _FA R *cu rp;u nsign ed is temp;shor t tok en;} FILE;FIL E 这个结构包含了文件操作的基本属性,对文件的操作都要通过这个结构的指针来进行,此种文件操作常用的函数见下表函数功能fope n() 打开流fc lose() 关闭流fput c() 写一个字符到流中fg etc()从流中读一个字符fseek() 在流中定位到指定的字符fputs() 写字符串到流fgets() 从流中读一行或指定个字符fpri ntf()按格式输出到流f scanf() 从流中按格式读取feo f() 到达文件尾时返回真值ferro r() 发生错误时返回其值r ewind() 复位文件定位器到文件开始处rem ove()删除文件frea d() 从流中读指定个数的字符fwri te()向流中写指定个数的字符tmp file() 生成一个临时文件流tmp nam()生成一个唯一的文件名下面就介绍一下这些函数1.fope n()f open的原型是:F ILE *fopen(cons t cha r *fi lenam e,con st ch ar *m ode),fopen实现三个功能为使用而打开一个流把一个文件和此流相连接给此流返回一个FIL R指针参数file name指向要打开的文件名,mode表示打开状态的字符串,其取值如下表字符串含义"r" 以只读方式打开文件"w"以只写方式打开文件"a"以追加方式打开文件"r+"以读/写方式打开文件,如无文件出错"w+" 以读/写方式打开文件,如无文件生成新文件一个文件可以以文本模式或二进制模式打开,这两种的区别是:在文本模式中回车被当成一个字符''/n'',而二进制模式认为它是两个字符0x0D,0x0A;如果在文件中读到0x1B,文本模式会认为这是文件结束符,也就是二进制模型不会对文件进行处理,而文本方式会按一定的方式对数据作相应的转换。
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语⾔⽂件操作函数freopen详细解析今天做USACO ⽤到了⽂件的操作。
之前做USACO只是格式化的些写 freopen("xxx.in","r",stdin)和"freopen("xxx.out","w",stdout)"替换⼀个流,或者说重新分配⽂件指针,实现重定向。
如果stream流已经打开,则先关闭该流。
如果该流已经定向,则freopen将会清除该定向。
此函数⼀般⽤于将⼀个指定的⽂件打开⼀个预定义的流:标准输⼊、标准输出或者标准出错。
FILE *freopen(const char *filename,const char *type, FILE *stream);头⽂件:stdio.h例1:复制代码代码如下:#include <stdio.h>#include <stdlib.h>int main(){if(freopen("file.txt","w",stdout)==NULL)fprintf(stderr,"error\n");printf("This is in the file\n"); //这句话会在file.txt中显⽰。
fclose(stdout); //使⽤fclose()函数就可以把<A href="/view/266782.htm" target=_blank>缓冲区</A>内最后剩余的数据输出到磁盘⽂件中,并释放⽂件指针和有关的缓冲区。
return 0;}例2:复制代码代码如下://⾸先在同路径下创建⼀个in.txt⽂本⽂档写⼊若⼲数字#include <stdio.h>#include <stdlib.h>int main(){freopen("in.txt","r",stdin); //从in.txt 中读⼊数据freopen("out.txt","w",stdout); // 将最后数据写⼊out.txt中int a,b;while(scanf("%d%d",&a,&b)!=EOF) //数据是从in.txt中输⼊的printf("%d\n",a+b); //写⼊out.txt中fclose(stdin);fclose(stdout);return 0;}freopen("CON","w",stdout) 表⽰在控制台窗⼝上写⼊数据;例3:复制代码代码如下:#include <stdio.h>#include <stdlib.h>int main(){// FILE *stream;freopen("file1.txt","w",stdout);printf("this is in file1.txt"); // 这句话在file1.txt中显⽰freopen("CON","w",stdout);printf("And this is in command.\n"); //这句话在控制台上显⽰return 0;}例5:关于fread 可以通过下⾯的程序,⼀看就知道什么意思了复制代码代码如下:#include <stdio.h>#include <stdlib.h>int main(){FILE *streamchar s[102400]="";if((stream=freopen("file.txt","r",stdin))==null)exit(-1);fread(s,1,1024,stdin); // 读取file.txt中1到1024位,放⼊s中,我是这么理解的 printf("%s\n",s);return 0;}。
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()所返回之文件指针。
如果已到文件尾则返回非零值,其他情况返回0。
返回值返回非零值代表已到达文件尾。
fflush(更新缓冲区)相关函数write,fopen,fclose,setbuf表头文件#include<stdio.h>定义函数int fflush(FILE* stream);函数说明fflush()会强迫将缓冲区内的数据写回参数stream指定的文件中。
如果参数stream 为NULL,fflush()会将所有打开的文件数据更新。
返回值成功返回0,失败返回EOF,错误代码存于errno中。
错误代码EBADF 参数stream 指定的文件未被打开,或打开状态为只读。
其它错误代码参考write()。
fgetc(由文件中读取一个字符)相关函数open,fread,fscanf,getc表头文件include<stdio.h>定义函数nt fgetc(FILE * stream);函数说明fgetc()从参数stream所指的文件中读取一个字符。
若读到文件尾而无数据时便返回EOF。
返回值getc()会返回读取到的字符,若返回EOF则表示到了文件尾。
范例#include<stdio.h>main(){FILE *fp;int c;fp=fopen(“exist”,”r”);while((c=fgetc(fp))!=EOF)printf(“%c”,c);fclose(fp);}fgets(由文件中读取一字符串)相关函数open,fread,fscanf,getc表头文件include<stdio.h>定义函数har * fgets(char * s,int size,FILE * stream);函数说明fgets()用来从参数stream所指的文件内读入字符并存到参数s所指的内存空间,直到出现换行字符、读到文件尾或是已读了size-1个字符为止,最后会加上NULL作为字符串结束。
返回值gets()若成功则返回s指针,返回NULL则表示有错误发生。
范例#include<stdio.h>main(){char s[80];fputs(fgets(s,80,stdin),stdout);}执行this is a test /*输入*/this is a test /*输出*/fileno(返回文件流所使用的文件描述词)相关函数open,fopen表头文件#include<stdio.h>定义函数int fileno(FILE * stream);函数说明fileno()用来取得参数stream指定的文件流所使用的文件描述词。
返回值返回文件描述词。
范例#include<stdio.h>main(){FILE * fp;int fd;fp=fopen(“/etc/passwd”,”r”);fd=fileno(fp);printf(“fd=%d\n”,fd);fclose(fp);}执行fd=3fopen(打开文件)相关函数open,fclose表头文件#include<stdio.h>定义函数FILE * fopen(const char * path,const char * mode);函数说明参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
mode有下列几种形态字符串:r 打开只读文件,该文件必须存在。
r+ 打开可读写的文件,该文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。
若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。
若文件不存在则建立该文件。
a 以附加的方式打开只写文件。
若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
a+ 以附加方式打开可读写的文件。
若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。
不过在POSIX系统,包含Linux都会忽略该字符。
由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask值。
返回值文件顺利打开后,指向该流的文件指针就会被返回。
若果文件打开失败则返回NULL,并把错误代码存在errno 中。
附加说明一般而言,开文件后会作一些文件读取或写入的动作,若开文件失败,接下来的读写动作也无法顺利进行,所以在fopen()后请作错误判断及处理。
范例#include<stdio.h>main(){FILE * fp;fp=fopen(“noexist”,”a+”);if(fp= =NULL) return;fclose(fp);}fputc(将一指定字符写入文件流中)相关函数fopen,fwrite,fscanf,putc表头文件#include<stdio.h>定义函数int fputc(int c,FILE * stream);函数说明fputc 会将参数c 转为unsigned char 后写入参数stream 指定的文件中。
返回值fputc()会返回写入成功的字符,即参数c。
若返回EOF则代表写入失败。
范例#include<stdio.h>main(){FILE * fp;char a[26]=”abcdefghijklmnopqrstuvwxyz”;int i;fp= fopen(“noexist”,”w”);for(i=0;i<26;i++)fputc(a,fp);fclose(fp);}fputs(将一指定的字符串写入文件内)相关函数fopen,fwrite,fscanf,fputc,putc表头文件#include<stdio.h>定义函数int fputs(const char * s,FILE * stream);函数说明fputs()用来将参数s所指的字符串写入到参数stream所指的文件内。
返回值若成功则返回写出的字符个数,返回EOF则表示有错误发生。
范例请参考fgets()。
fread(从文件流读取数据)相关函数fopen,fwrite,fseek,fscanf表头文件#include<stdio.h>定义函数size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream);函数说明fread()用来从文件流中读取数据。
参数stream为已打开的文件指针,参数ptr 指向欲存放读取进来的数据空间,读取的字符数以参数size*nmemb来决定。
Fread()会返回实际读取到的nmemb数目,如果此值比参数nmemb 来得小,则代表可能读到了文件尾或有错误发生,这时必须用feof()或ferror()来决定发生什么情况。
返回值返回实际读取到的nmemb数目。
附加说明范例#include<stdio.h>#define nmemb 3struct test{char name[20];int size;}s[nmemb];int main(){FILE * stream;int i;stream = fopen(“/tmp/fwrite”,”r”);fread(s,sizeof(struct test),nmemb,stream);fclose(stream);for(i=0;i<nmemb;i++)printf(“name[%d]=%-20s:size[%d]=%d\n”,i,,i,s.size);}执行name[0]=linux! size[0]=6name[1]=FreeBSD! size[1]=8name[2]=Windows2000 size[2]=11freopen(打开文件)相关函数fopen,fclose表头文件#include<stdio.h>定义函数FILE * freopen(const char * path,const char * mode,FILE * stream);函数说明参数path字符串包含欲打开的文件路径及文件名,参数mode请参考fopen()说明。