C语言文件流操作函数大全
clearerr(清除文件流的错误旗标)
相关函数feof
表头文件#include
定义函数void clearerr(FILE * stream);
函数说明clearerr()清除参数stream指定的文件流所使用的错误旗标。
返回值
fclose(关闭文件)
相关函数close,fflush,fopen,setbuf
表头文件#include
定义函数int fclose(FILE * stream);
函数说明fclose()用来关闭先前fopen()打开的文件。此动作会让缓冲区内的数据写入文件中,并释放系统所提供的文件资源。
返回值若关文件动作成功则返回0,有错误发生时则返回EOF并把错误代码存到errno。错误代码EBADF表示参数stream非已打开的文件。
范例请参考fopen()。
fdopen(将文件描述词转为文件指针)
相关函数fopen,open,fclose
表头文件#include
定义函数FILE * fdopen(int fildes,const char * mode);
函数说明fdopen()会将参数fildes 的文件描述词,转换为对应的文件指针后返回。参数mode 字符串则代表着文件指针的流形态,此形态必须和原先文件描述词读写模式相同。关于mode 字符串格式请参考fopen()。
返回值转换成功时返回指向该流的文件指针。失败则返回NULL,并把错误代码存在errno 中。
范例
#include
main()
{
FILE * fp =fdopen(0,”w+”);
fprintf(fp,”%s\n”,”hello!”);
fclose(fp);
}
执行hello!
feof(检查文件流是否读到了文件尾)
相关函数fopen,fgetc,fgets,fread
表头文件#include
定义函数int feof(FILE * stream);
函数说明feof()用来侦测是否读取到了文件尾,尾数stream为fopen()所返回之文件指针。如果已到文件尾则返回非零值,其他情况返回0。
返回值返回非零值代表已到达文件尾。
fflush(更新缓冲区)
相关函数write,fopen,fclose,setbuf
表头文件#include
定义函数int fflush(FILE* stream);
函数说明fflush()会强迫将缓冲区内的数据写回参数stream指定的文件中。如果参数stream 为NULL,fflush()会将所有打开的文件数据更新。
返回值成功返回0,失败返回EOF,错误代码存于errno中。
错误代码EBADF 参数stream 指定的文件未被打开,或打开状态为只读。其它错误代码参考write()。
fgetc(由文件中读取一个字符)
相关函数open,fread,fscanf,getc
表头文件include
定义函数nt fgetc(FILE * stream);
函数说明fgetc()从参数stream所指的文件中读取一个字符。若读到文件尾而无数据时便返回EOF。
返回值getc()会返回读取到的字符,若返回EOF则表示到了文件尾。
范例
#include
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
定义函数har * fgets(char * s,int size,FILE * stream);
函数说明fgets()用来从参数stream所指的文件内读入字符并存到参数s所指的内存空间,直到出现换行字符、读到文件尾或是已读了size-1个字符为止,最后会加上NULL作为字符串结束。
返回值gets()若成功则返回s指针,返回NULL则表示有错误发生。
范例
#include
main()
{
char s[80];
fputs(fgets(s,80,stdin),stdout);
}
执行this is a test /*输入*/
this is a test /*输出*/
fileno(返回文件流所使用的文件描述词)
相关函数open,fopen
表头文件#include
定义函数int fileno(FILE * stream);
函数说明fileno()用来取得参数stream指定的文件流所使用的文件描述词。
返回值返回文件描述词。
范例
#include
main()
{
FILE * fp;
int fd;
fp=fopen(“/etc/passwd”,”r”);
fd=fileno(fp);
printf(“fd=%d\n”,fd);
fclose(fp);
}
执行fd=3
fopen(打开文件)
相关函数open,fclose
表头文件#include
定义函数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
main()
{
FILE * fp;
fp=fopen(“noexist”,”a+”);
if(fp= =NULL) return;
fclose(fp);
}
fputc(将一指定字符写入文件流中)
相关函数fopen,fwrite,fscanf,putc
表头文件#include
定义函数int fputc(int c,FILE * stream);
函数说明fputc 会将参数c 转为unsigned char 后写入参数stream 指定的文件中。
返回值fputc()会返回写入成功的字符,即参数c。若返回EOF则代表写入失败。
范例
#include
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
定义函数int fputs(const char * s,FILE * stream);
函数说明fputs()用来将参数s所指的字符串写入到参数stream所指的文件内。
返回值若成功则返回写出的字符个数,返回EOF则表示有错误发生。
范例请参考fgets()。
fread(从文件流读取数据)
相关函数fopen,fwrite,fseek,fscanf
表头文件#include
定义函数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
#define nmemb 3
struct 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 printf(“name[%d]=%-20s:size[%d]=%d\n”,i,https://www.360docs.net/doc/0413981077.html,,i,s.size); } 执行 name[0]=linux! size[0]=6 name[1]=FreeBSD! size[1]=8 name[2]=Windows2000 size[2]=11 freopen(打开文件) 相关函数fopen,fclose 表头文件#include 定义函数FILE * freopen(const char * path,const char * mode,FILE * stream); 函数说明参数path字符串包含欲打开的文件路径及文件名,参数mode请参考fopen()说明。参数stream为已打开的文件指针。Freopen()会将原stream所打开的文件流关闭,然后打开参数path的文件。 返回值文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。 范例 #include main() { FILE * fp; fp=fopen(“/etc/passwd”,”r”); fp=freopen(“/etc/group”,”r”,fp); fclose(fp); } fseek(移动文件流的读写位置) 相关函数rewind,ftell,fgetpos,fsetpos,lseek 表头文件#include 定义函数int fseek(FILE * stream,long offset,int whence); 函数说明fseek()用来移动文件流的读写位置。参数stream为已打开的文件指针,参数offset 为根据参数whence来移动读写位置的位移数。 参数whence为下列其中一种: SEEK_SET从距文件开头offset位移量为新的读写位置。SEEK_CUR 以目前的读写位置 往后增加offset个位移量。 SEEK_END将读写位置指向文件尾后再增加offset个位移量。 当whence值为SEEK_CUR 或SEEK_END时,参数offset允许负值的出现。 下列是较特别的使用方式: 1) 欲将读写位置移动到文件开头时:fseek(FILE *stream,0,SEEK_SET); 2) 欲将读写位置移动到文件尾时:fseek(FILE *stream,0,0SEEK_END); 返回值当调用成功时则返回0,若有错误则返回-1,errno会存放错误代码。 附加说明fseek()不像lseek()会返回读写位置,因此必须使用ftell()来取得目前读写的位置。范例 #include main() { FILE * stream; long offset; fpos_t pos; stream=fopen(“/etc/passwd”,”r”); fseek(stream,5,SEEK_SET); printf(“offset=%d\n”,ftell(stream)); rewind(stream); fgetpos(stream,&pos); printf(“offset=%d\n”,pos); pos=10; fsetpos(stream,&pos); printf(“offset = %d\n”,ftell(stream)); fclose(stream); } 执行offset = 5 offset =0 offset=10 ftell(取得文件流的读取位置) 相关函数fseek,rewind,fgetpos,fsetpos 表头文件#include 定义函数long ftell(FILE * stream); 函数说明ftell()用来取得文件流目前的读写位置。参数stream为已打开的文件指针。 返回值当调用成功时则返回目前的读写位置,若有错误则返回-1,errno会存放错误代码。错误代码EBADF 参数stream无效或可移动读写位置的文件流。 范例参考fseek()。 fwrite(将数据写至文件流) 相关函数fopen,fread,fseek,fscanf 表头文件#include 定义函数size_t fwrite(const void * ptr,size_t size,size_t nmemb,FILE * stream); 函数说明fwrite()用来将数据写入文件流中。参数stream为已打开的文件指针,参数ptr 指向欲写入的数据地址,总共写入的字符数以参数size*nmemb来决定。Fwrite()会返回实际写入的nmemb数目。 返回值返回实际写入的nmemb数目。 范例 #include #define set_s (x,y) {strcoy(s[x].name,y);s[x].size=strlen(y);} #define nmemb 3 struct test { char name[20]; int size; }s[nmemb]; main() { FILE * stream; set_s(0,”Linux!”); set_s(1,”FreeBSD!”); set_s(2,”Windows2000.”); stream=fopen(“/tmp/fwrite”,”w”); fwrite(s,sizeof(struct test),nmemb,stream); fclose(stream); } 执行参考fread()。 getc(由文件中读取一个字符) 相关函数read,fopen,fread,fgetc 表头文件#include 定义函数int getc(FILE * stream); 函数说明getc()用来从参数stream所指的文件中读取一个字符。若读到文件尾而无数据时便返回EOF。虽然getc()与fgetc()作用相同,但getc()为宏定义,非真正的函数调用。 返回值getc()会返回读取到的字符,若返回EOF则表示到了文件尾。 范例参考fgetc()。 getchar(由标准输入设备内读进一字符) 相关函数fopen,fread,fscanf,getc 表头文件#include 定义函数int getchar(void); 函数说明getchar()用来从标准输入设备中读取一个字符。然后将该字符从unsigned char 转换成int后返回。 返回值getchar()会返回读取到的字符,若返回EOF则表示有错误发生。 附加说明getchar()非真正函数,而是getc(stdin)宏定义。 范例 #include main() { FILE * fp; int c,i; for(i=0li<5;i++) { c=getchar(); putchar(c); } } 执行1234 /*输入*/ 1234 /*输出*/ gets(由标准输入设备内读进一字符串) 相关函数fopen,fread,fscanf,fgets 表头文件#include 定义函数char * gets(char *s); 函数说明gets()用来从标准设备读入字符并存到参数s所指的内存空间,直到出现换行字符或读到文件尾为止,最后加上NULL作为字符串结束。 返回值gets()若成功则返回s指针,返回NULL则表示有错误发生。 附加说明由于gets()无法知道字符串s的大小,必须遇到换行字符或文件尾才会结束输入,因此容易造成缓冲溢出的安全性问题。建议使用fgets()取代。 范例参考fgets() mktemp(产生唯一的临时文件名) 相关函数tmpfile 表头文件#include 定义函数char * mktemp(char * template); 函数说明mktemp()用来产生唯一的临时文件名。参数template所指的文件名称字符串中 最后六个字符必须是XXXXXX。产生后的文件名会借字符串指针返回。 返回值文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno中。 附加说明参数template所指的文件名称字符串必须声明为数组,如: char template[ ]=”te mplate-XXXXXX”; 不可用char * template=”template-XXXXXX”; 范例 #include main() { char template[ ]=”template-XXXXXX”; mktemp(template); printf(“template=%s\n”,template); } putc(将一指定字符写入文件中) 相关函数fopen,fwrite,fscanf,fputc 表头文件#include 定义函数int putc(int c,FILE * stream); 函数说明putc()会将参数c转为unsigned char后写入参数stream指定的文件中。虽然putc()与fputc()作用相同,但putc()为宏定义,非真正的函数调用。 返回值putc()会返回写入成功的字符,即参数c。若返回EOF则代表写入失败。 范例参考fputc()。 putchar(将指定的字符写到标准输出设备) 相关函数fopen,fwrite,fscanf,fputc 表头文件#include 定义函数int putchar (int c); 函数说明putchar()用来将参数c字符写到标准输出设备。 返回值putchar()会返回输出成功的字符,即参数c。若返回EOF则代表输出失败。 附加说明putchar()非真正函数,而是putc(c,stdout)宏定义。 范例参考getchar()。 rewind(重设文件流的读写位置为文件开头) 相关函数fseek,ftell,fgetpos,fsetpos 表头文件#include 定义函数void rewind(FILE * stream); 函数说明rewind()用来把文件流的读写位置移至文件开头。参数stream为已打开的文件指针。此函数相当于调用fseek(stream,0,SEEK_SET)。 返回值 范例参考fseek() setbuf(设置文件流的缓冲区) 相关函数setbuffer,setlinebuf,setvbuf 表头文件#include 定义函数void setbuf(FILE * stream,char * buf); 函数说明在打开文件流后,读取内容之前,调用setbuf()可以用来设置文件流的缓冲区。参数stream为指定的文件流,参数buf指向自定的缓冲区起始地址。如果参数buf为NULL 指针,则为无缓冲IO。Setbuf()相当于调 用:setvbuf(stream,buf,buf?_IOFBF:_IONBF,BUFSIZ) 返回值 setbuffer(设置文件流的缓冲区) 相关函数setlinebuf,setbuf,setvbuf 表头文件#include 定义函数void setbuffer(FILE * stream,char * buf,size_t size); 函数说明在打开文件流后,读取内容之前,调用setbuffer()可用来设置文件流的缓冲区。参数stream为指定的文件流,参数buf指向自定的缓冲区起始地址,参数size为缓冲区大小。 返回值 setlinebuf(设置文件流为线性缓冲区) 相关函数setbuffer,setbuf,setvbuf 表头文件#include 定义函数void setlinebuf(FILE * stream); 函数说明setlinebuf()用来设置文件流以换行为依据的无缓冲IO。相当于调 用:setvbuf(stream,(char * )NULL,_IOLBF,0);请参考setvbuf()。 返回值 setvbuf(设置文件流的缓冲区) 相关函数setbuffer,setlinebuf,setbuf 表头文件#include 定义函数int setvbuf(FILE * stream,char * buf,int mode,size_t size); 函数说明在打开文件流后,读取内容之前,调用setvbuf()可以用来设置文件流的缓冲区。参数stream为指定的文件流,参数buf指向自定的缓冲区起始地址,参数size为缓冲区大小,参数mode有下列几种 _IONBF 无缓冲IO _IOLBF 以换行为依据的无缓冲IO _IOFBF 完全无缓冲IO。如果参数buf为NULL指针,则为无缓冲IO。 返回值 ungetc(将指定字符写回文件流中) 相关函数fputc,getchar,getc 表头文件#include 定义函数int ungetc(int c,FILE * stream); 函数说明ungetc()将参数c字符写回参数stream所指定的文件流。这个写回的字符会由下一个读取文件流的函数取得。 返回值成功则返回c 字符,若有错误则返回EOF。 C语言的常用库函数 函数1。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.h 函数2。abswrite()写磁盘绝对扇区函数 原形: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.h 函数3。atof()将字符串转换成浮点数的函数 原形:double atof(const char *s) 功能:把s所指向的字符串转换成double类型。 s格式为:符号数字.数字E符号数字 返回值:字符串的转换值。 头文件:math.h、stdlib.h 函数4。atoi()将字符串转换成整型数的函数 原形:int atoi(const char *s) 功能:把s所指向的字符串转换成int类型。 s格式为:符号数字 返回值:字符串的转换值。若出错则返回0。 头文件:stdlib.h 函数5。atol()将字符串转换成长整型数的函数 原形:long atol(const char *s) 文件操作函数C语言(FILE fputc fgetc fputs fgets fscanf fprintf) 在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。 一、流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下:typedef struct{ int level;/*fill/empty level of buffer*/ unsigned flags;/*File status flags*/ char fd;/*File descriptor*/ unsigned char hold;/*Ungetc char if no buffer*/ int bsize;/*Buffer size*/ unsigned char_FAR*buffer;/*Data transfer buffer*/ unsigned char_FAR*curp;/*Current active pointer*/ unsigned istemp;/*Temporary file indicator*/ short token;/*Used for validity checking*/ }FILE;/*This is the FILE object*/ FILE这个结构包含了文件操作的基本属性,对文件的操作都要通过这个结构的指针来进行,此种文件操作常用的函数见下表函数功能 fopen()打开流 fclose()关闭流 fputc()写一个字符到流中 fgetc()从流中读一个字符 fseek()在流中定位到指定的字符 fputs()写字符串到流 fgets()从流中读一行或指定个字符 fprintf()按格式输出到流 fscanf()从流中按格式读取 feof()到达文件尾时返回真值 ferror()发生错误时返回其值 rewind()复位文件定位器到文件开始处 remove()删除文件 fread()从流中读指定个数的字符 fwrite()向流中写指定个数的字符 tmpfile()生成一个临时文件流 tmpnam()生成一个唯一的文件名 下面就介绍一下这些函数 1.fopen() fopen的原型是:FILE*fopen(const char*filename,const char*mode),fopen实现三个功 1.分类函数,所在函数库为ctype.h int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0 int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非0值,否则返回0 int isascii(int ch) 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0 int iscntrl(int ch) 若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F) 返回非0值,否则返回0 int isdigit(int ch) 若ch是数字('0'-'9')返回非0值,否则返回0 int isgraph(int ch) 若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否则返回0 int islower(int ch) 若ch是小写字母('a'-'z')返回非0值,否则返回0 int isprint(int ch) 若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否则返回0 int ispunct(int ch) 若ch是标点字符(0x00-0x1F)返回非0值,否则返回0 int isspace(int ch) 若ch是空格(' '),水平制表符('\t'),回车符('\r'), 走纸换行('\f'),垂直制表符('\v'),换行符('\n') 返回非0值,否则返回0 int isupper(int ch) 若ch是大写字母('A'-'Z')返回非0值,否则返回0 int isxdigit(int ch) 若ch是16进制数('0'-'9','A'-'F','a'-'f')返回非0值, 否则返回0 int tolower(int ch) 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z') int toupper(int ch) 若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z') 2.数学函数,所在函数库为math.h、stdlib.h、string.h、float.h int 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为弧度 Linux下C语言的文件(fputc,fgetc,fwrite,fread对文件读写操 作) //================================== fputc 向文件写入字符 #include FILE *fp; int i; if((fp=fopen(argv[1],"r"))==NULL) { printf("不能打开文件\n"); exit(0); } while ((ch=fgetc(fp))!=EOF) putchar(ch); fclose(fp); } 文件结尾,通过判断EOF //============================================================== fwrite 的使用 使数组或结构体等类型可以进行一次性读写 #include 1.创建文件夹 //using System.IO; Directory.CreateDirectory(%%1); 2.创建文件 //using System.IO; File.Create(%%1); 3.删除文件 //using System.IO; File.Delete(%%1); 4.删除文件夹 //using System.IO; Directory.Delete(%%1); 5.删除一个目录下所有的文件夹 //using System.IO; foreach (string dirStr in Directory.GetDirectories(%%1)) { DirectoryInfo dir = new DirectoryInfo(dirStr); ArrayList folders=new ArrayList(); FileSystemInfo[] fileArr = dir.GetFileSystemInfos(); for (int i = 0; i < folders.Count; i++) { FileInfo f = folders[i] as FileInfo; if (f == null) { DirectoryInfo d = folders[i] as DirectoryInfo; d.Delete(); } } } 6.清空文件夹 //using System.IO; Directory.Delete(%%1,true); Directory.CreateDirectory(%%1); 7.读取文件 //using System.IO; StreamReader s = File.OpenText(%%1); string %%2 = null; while ((%%2 = s.ReadLine()) != null){ C语言读写文件操作 #include 字符处理函数 本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换 头文件ctype.h 函数列表<> 函数类别函数用途详细说明 字符测试是否字母和数字isalnum 是否字母isalpha 是否控制字符iscntrl 是否数字isdigit 是否可显示字符(除空格外)isgraph 是否可显示字符(包括空格)isprint 是否既不是空格,又不是字母和数字的可显示字符ispunct 是否空格isspace 是否大写字母isupper 是否16进制数字(0-9,A-F)字符isxdigit 字符大小写转换函数转换为大写字母toupper 转换为小写字母tolower 地区化 本类别的函数用于处理不同国家的语言差异。 头文件local.h 函数列表 函数类别函数用途详细说明 地区控制地区设置setlocale 数字格式约定查询国家的货币、日期、时间等的格式转换localeconv 数学函数 本分类给出了各种数学计算函数,必须提醒的是ANSI C标准中的数据格式并不符合IEEE754标准,一些C语言编译器却遵循IEEE754(例如frinklin C51) 头文件math.h 函数列表 函数类别函数用途详细说明 错误条件处理定义域错误(函数的输入参数值不在规定的范围内) 值域错误(函数的返回值不在规定的范围内) 三角函数反余弦acos 反正弦asin 反正切atan 反正切2 atan2 余弦cos 正弦sin 正切tan 双曲函数双曲余弦cosh 双曲正弦sinh 双曲正切tanh 指数和对数指数函数exp 指数分解函数frexp 乘积指数函数fdexp 自然对数log 以10为底的对数log10 浮点数分解函数modf 幂函数幂函数pow 平方根函数sqrt 整数截断,绝对值和求余数函数求下限接近整数ceil 绝对值fabs 求上限接近整数floor 求余数fmod 本分类函数用于实现在不同底函数之间直接跳转代码。头文件setjmp.h io.h 函数列表 函数类别函数用途详细说明 保存调用环境setjmp 恢复调用环境longjmp 信号处理 该分类函数用于处理那些在程序执行过程中发生例外的情况。 头文件signal.h 函数列表 函数类别函数用途详细说明 指定信号处理函数signal 发送信号raise 可变参数处理 本类函数用于实现诸如printf,scanf等参数数量可变底函数。 C语言中的文件操作 12.1请编写一个程序,把一个文件的内容复制到另一个文件中。 程序如下: #include 程序如下:#include C语言中文件,数据的输入输出,读写. 文件是数据的集合体,对文件的处理过程就是对文件的读写过程,或输入输出过程。 所谓文件是指内存以外的媒体上以某种形式组织的一组相关数据的有序集合。文件分类: 顺序文件,随机文件。 文本文件和二进制文件。 文本文件也称为ASCII文件,在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。 文本文件可以在屏幕上按字符显示,源程序文件就是文本文件,由于是按字符显示,所以能读懂文件内容。 二进制文件是按二进制编码方式来存放的。这里主要讨论文件的打开,关闭,读,写,定位等操作。 文件的存取方法 C程序的输入输出(I/O)有两种方式:一种称为标准I/O或流式I/O,另一种称为低级I/O。流式I/O是依靠标准库函数中的输入输出函数实现的。低级I/O利用操作系统提供的接口函数(称为底层接口或系统调用)实现输入输出,低级I/O 主要提供系统软件使用。 在C语言中用一个FILE类型的指针变量指向一个文件,(FILE类型是系统在stdio.h中定义的描述已打开文件的一种结构类型),这个指针称为文件指针。FILE *指针变量标识符; 如 FILE *fp; 文件的打开与关闭 所谓打开文件,指的是建立文件的各种有关信息,并使文件指针指向该文件,以便对它进行操作。 关闭文件则是断开指针与文件之间的联系,也就禁止再对该文件进行操作。 1、fopen 函数原型:FILE *fopen(const char *filename,const char *mode); Fopen函数用来打开一个文件,前一部分用来说明文件路径及文件名,后一部分mode指出了打开文件的存取方式;返回值是被打开文件的FILE型指针,若打开失败,则返回NULL。打开文件的语法格式如下: 文件指针名=fopen(文件名,使用文件方式); 文件指针名必须被说明为FILE类型的指针变量。 FILE *fp; fp=fopen(“C:\\Windowss\\abc.txt”,”r”); 注意用两个反斜杠\\来表示目录间的间隔符。 存取文件的模式是一个字符串,可以由字母r,w,a,t,b及+组合而成,各字符的含 字符函数和字符串函数 头文件:字符串函数头文件:#include 5. Scanf(“%d%c%f”,&a,&b,&c); 输入时1234a123h26↙在输入遇到时空格回车 tab或其他非法输入就会认定输入完毕 Gets (字符数组):读入字符串函数 Gets(str)从键盘键入a b↙括号里为字符数组str的起始地址,Puts(字符数组):输出字符串函数 Strcat(字符数组1,字符数组2):字符串连接函数(2连接在1后面) Strcpy和strncpy:字符串复制函数 Strcpy(字符数组1,字符数组2):将2复制到1 数组1 要为数组名,字符串2可以为数组名或者字符串 Strncpy(str1,str2,2):将str2的前两个字符复制到str1,取代str1的前两个字符 Strcmp:字符串比较函数 Strcmp(str1,str2):相等则为0(对字符串自左向右逐个字母进行比较) Strlen(字符数组):测字符串的实际长度 Strlwr(字符串)将字符串转换为大写 Strupr(字符串)将字符串转换为小写 C语言文件练习题 1.系统的标准输入文件是指_________. a)键盘 b)显示器 c)软盘 d)硬盘 2.若执行fopen函数时发生错误,则函数的返回值是______. a)地址值 b)0 c)1 d)EOF 3.若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是______. a)"ab+" b)"wb+" c)"rb+" d)"ab" 4.fscanf函数的正确调用形式是______. a)fscanf(fp,格式字符串,输出表列) ) 11.下列关于C语言数据文件的叙述中正确的是________ A)文件由ASCII码字符序列组成,C语言只能读写文本文件 B)文件由二进制数据序列组成,C语言只能读写二进制文件 C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件 D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 12.函数fseek(pf, OL,SEEK_END)中的SEEK_END代表的起始点是________ A)文件开始B)文件末尾C)文件当前位置D)以上都不对 13.C语言中,能识别处理的文件为_______ A)文本文件和数据块文件B)文本文件和二进制文件 C)流文件和文本文件D)数据文件和二进制文件 14.若调用fputc函数输出字符成功,则其返回值是________ A)EOF B)1 C)0 D)输出的字符 15 已知函数的调用形式:fread(buf,size,count,fp),参数buf的含义是______ A)一个整型变量,代表要读入的数据项总数 B)一个文件指针,指向要读的文件 C)一个指针,指向要读入数据的存放地址 D)一个存储区,存放要读的数据项 16 当顺利执行了文件关闭操作时,fclose函数的返回值是_________ A)-1 B)TRUE C)0 D)1 17.如果需要打开一个已经存在的非空文件“Demo”进行修改下面正确的选项是______ 盘 d) 为pname指定的相应文件开辟一个缓冲区,调用操作系统提供的打开或 建立新文件功能; 22.利用fwrite (buffer, sizeof(Student),3, fp)函数描述不正确的_________. a) 将3个学生的数据块按二进制形式写入文件; b) 将由buffer指定的数据缓冲区内的3* sizeof(Student)个字节的数据写入指定文件; c) 返回实际输出数据块的个数, 若返回0值表示输出结束或发生了错误; d) 若由fp指定的文件不存在,则返回0值; 23.利用fread (buffer,size,count,fp)函数可实现的操作_________. a) 从fp指向的文件中,将count个字节的数据读到由buffer指出的数据区 库函数并不是C语言的一部分,它是由编译系统根据一般用户的需要编制并 提供给用户使用的一组程序。每一种C编译系统都提供了一批库函数,不同的 编译系统所提供的库函数的数目和函数名以及函数功能是不完全相同的。ANSI C标准提出了一批建议提供的标准库函数。它包括了目前多数C编译系统所提供 的库函数,但也有一些是某些C编译系统未曾实现的。考虑到通用性,本附录 列出ANSI C建议的常用库函数。 由于C库函数的种类和数目很多,例如还有屏幕和图形函数、时间日期函数、 与系统有关的函数等,每一类函数又包括各种功能的函数,限于篇幅,本附录不 能全部介绍,只从教学需要的角度列出最基本的。读者在编写C程序时可根据 需要,查阅有关系统的函数使用手册。 1.数学函数 使用数学函数时,应该在源文件中使用预编译命令: #include C语言文件操作函数大全 clearerr(清除文件流的错误旗标) 相关函数 feof 表头文件 #include 功能: 异常终止一个进程 用法: 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) 头文件ctype.h 函数列表<> 函数类别函数用途详细说明 字符测试是否字母和数字isalnum 是否字母isalpha 是否控制字符iscntrl 是否数字isdigit 是否可显示字符(除空格外)isgraph 是否可显示字符(包括空格)isprint 是否既不是空格,又不是字母和数字的可显示字符ispunct 是否空格isspace 是否大写字母isupper 是否16进制数字(0-9,A-F)字符isxdigit 字符大小写转换函数转换为大写字母toupper 转换为小写字母tolower 地区化 本类别的函数用于处理不同国家的语言差异。 头文件local.h 函数列表 函数类别函数用途详细说明 地区控制地区设置setlocale 数字格式约定查询国家的货币、日期、时间等的格式转换localeconv 数学函数 本分类给出了各种数学计算函数,必须提醒的是ANSI C标准中的数据格式并不符合IEEE754标准,一些C语言编译器却遵循IEEE754(例如frinklin C51) 头文件math.h 函数列表 函数类别函数用途详细说明 错误条件处理定义域错误(函数的输入参数值不在规定的范围内) 值域错误(函数的返回值不在规定的范围内) 三角函数反余弦acos 反正弦asin 反正切atan 反正切2 atan2 余弦cos 正弦sin 正切tan 双曲函数双曲余弦cosh 双曲正弦sinh 双曲正切tanh 指数和对数指数函数exp 指数分解函数frexp 乘积指数函数fdexp 自然对数log 以10为底的对数log10 浮点数分解函数modf 幂函数幂函数pow 平方根函数sqrt 整数截断,绝对值和求余数函数求下限接近整数ceil 绝对值fabs 求上限接近整数floor 求余数fmod 本分类函数用于实现在不同底函数之间直接跳转代码。头文件setjmp.h io.h 函数列表 函数类别函数用途详细说明 保存调用环境setjmp 恢复调用环境longjmp 信号处理 该分类函数用于处理那些在程序执行过程中发生例外的情况。 头文件signal.h 函数列表 函数类别函数用途详细说明 指定信号处理函数signal 发送信号raise 可变参数处理 本类函数用于实现诸如printf,scanf等参数数量可变底函数。 头文件stdarg.h 函数列表 C语言中对文件进行操作如何使用绝对路径? 我编了一个小程序试了一下,好像默认的路径是在生成的.exe文件所在目录下。如果使用像D:\\ABC.TXT这样的路径可以在D盘下对ABC.TXT进行操作,但如果使用D:\\SSS\ABC.TXT就不正确了,创建的文件是SSSABC.TXT,不支持多级的路径,它把路径和文件名弄混了。 到底怎么办 D:\\SSS\\ABC.TXT //你少了个\,在C字符串中,出现\的地方,你一律打两个\\就行了。 请问啊,C语言里,fopen、fread与fwrite的参数中,要求文件名,用写盘符吗? 写绝对路径吗?#include 时间延迟函数 函数名: delay 功能: 将程序的执行暂停一段时间(毫秒) 用法: void delay(unsigned milliseconds); 重画屏幕区域的函数 函数名:getimage 功能:将指定区域的一个位图存到主存中 用法:void far getimage( int left, int top, int right, int bottom, void far *bitmap); 函数名:putimage 功能:在屏幕上输出一个位图 用法:void far putimage( int x, int y, void far *bitmap, int op ); 图像大小函数 函数名: imagesize 功能: 返回保存位图像所需的字节数 用法: unsigned far imagesize( int left, int top, int right, int bottom ); 异或模式函数 函数名: setwritemode 功能: 设置图形方式下画线的输出模式 用法: void far setwritemode(int mode); 参数MODE可以被设置位COPY_PUT或者XOR_PUT两种模式。当mode被设置为XOR_PUT,其后的图形操作将都采用异或方式。此外之前提到的putimage()函数也可以采用异或模式向屏幕复制图像。 检测键盘输入函数 函数名: kbhit 功能: 检查当前按下的键 用法: int kbhit(void); 键盘接口函数 函数名: bioskey 功能: 直接使用BIOS服务的键盘接口 用法: int bioskey(int cmd); 该函数通过bois中断0x16执行键盘操作,由参数cmd来决定具体的操作。 Cmd 具体操作 0 读取按键的ascii码 1 测试是否有按键如果没有按键返回0 如果按键为ctrl+brk 返回-1 如果是其他按键返回按键本身键值(直到此按键被取出后恢复0) 2 返回shift key 状态 以下是当cmd为2的时候,返回值的具体含义 文件操作函数 C语言 (FILE fputc fgetc fputs fgets fscanf fprintf) 在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。 一、流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在中定义如下: typedef struct { int level; /* fill/empty level of buffer */ unsigned flags; /* File status flags */ char fd; /* File descriptor */ unsigned char hold; /* Ungetc char if no buffer */ int bsize; /* Buffer size */ unsigned char _FAR *buffer; /* Data transfer buffer */ unsigned char _FAR *curp; /* Current active pointer */ unsigned istemp; /* Temporary file indicator */ short token; /* Used for validity checking */ } FILE; /* This is the FILE object */ FILE这个结构包含了文件操作的基本属性,对文件的操作都要通过这个结构的指针来进行,此种文件操作常用的函数见下表函数功能 fopen() 打开流 fclose() 关闭流 fputc() 写一个字符到流中 VGA文本16/256K40*25360*4009*16B8000彩色 CGA文本16/1680*25640*2008*8B8000彩色 2/3EGA文本16/6480*25640*3508*14B8000彩色 VGA(3+)文本16/256K80*25720*4009*16B8000彩色 CGA图形4/1640*25320*2008*8B8000彩色 4/5EGA图形4/6440*25320*2008*8B8000彩色 VGA图形4/256K40*25320*2008*8B8000彩色 CGA图形2/1640*25640*2008*8B8000单色 6EGA图形2/6440*25640*2008*8B8000单色 VGA图形2/256K40*25640*2008*8B8000单色 7MDA/EGA文本单色80*25720*3509*14B0000单色 VGA(7+)文本单色80*25720*4009*16B0000单色 D EGA图形16/6440*25320*2008*8A0000彩色 VGA图形16/256K40*25320*2008*8A0000彩色 E EGA图形16/6480*25640*2008*8A0000彩色 VGA图形16/256K80*25640*2008*8A0000彩色 F EGA/VGA图形单色80*25640*3508*14A0000单色 10EGA图形16/6480*25640*3508*14A0000彩色 VGA图形16/256K80*25640*3508*14A0000彩色 11VGA图形2/256K80*30640*4808*16A0000彩色 12VGA图形16/256K80*30640*4808*16A0000彩色 13VGA图形256/256K40*25320*2008*8A000彩色 常规内存函数 申请函数: malloc(),farmalloc(),calloc(),farcalloc(),realloc(),farealloc()函数名:malloc 功能:内存分配函数 用法:void*malloc(unsigned size); 函数名:farmalloc 功能:从远堆中分配存储块 用法:void far*farmalloc(unsigned long size); 函数名:calloc 功能:分配主存储器 用法:void*calloc(size_t nelem,size_t elsize); 函数名:farcalloc 功能:从远堆栈中申请空间C语言常用函数
C语言程序中关于文件的操作
C语言常用函数手册
Linux下C语言的文件读写
C语言文件操作大全
C语言读写文件操作
C语言中常用的库函数
C语言 文件操作
C语言中文件_数据的输入输出_读写
C语言常用函数名及用法
C语言 文件练习题
C语言常用的库函数
C语言文件操作命令
C语言函数大全
c语言中常用的函数和头文件
C语言文件操作之绝对路径
【C语言吧】做游戏常用函数
c语言程序中关于文件的操作
C语言中游戏编程常用的函数实例解说