C语言文件操作

输入输出子程序,函数库为io.h、conio.h、stat.h、dos.h、stdio.h、signal.h
int       kbhit()         本函数返回最近所敲的按键
int       fgetchar()   从控制台(键盘)读一个字符,显示在屏幕上
int       getch()         从控制台(键盘)读一个字符,不显示在屏幕上
int       putch()         向控制台(键盘)写一个字符
int       getchar()     从控制台(键盘)读一个字符,显示在屏幕上
int       putchar()     向控制台(键盘)写一个字符
int       getche()       从控制台(键盘)读一个字符,显示在屏幕上
int       ungetch(int   c)   把字符c退回给控制台(键盘)
char   *cgets(char   *string)   从控制台(键盘)读入字符串存于string中
int       scanf(char   *format[,argument…])从控制台读入一个字符串,分别对各个参数进行
              赋值,使用BIOS进行输出
int       vscanf(char   *format,Valist   param)从控制台读入一个字符串,分别对各个参数进行
              赋值,使用BIOS进行输出,参数从Valist   param中取得
int       cscanf(char   *format[,argument…])从控制台读入一个字符串,分别对各个参数进行
              赋值,直接对控制台作操作,比如显示器在显示时字符时即为直接写频方式显示
int       sscanf(char   *string,char   *format[,argument,…])通过字符串string,分别对各个
              参数进行赋值
int       vsscanf(char   *string,char   *format,Vlist   param)通过字符串string,分别对各个
              参数进行赋值,参数从Vlist   param中取得
int       puts(char   *string)     发关一个字符串string给控制台(显示器),
              使用BIOS进行输出
void     cputs(char   *string)   发送一个字符串string给控制台(显示器),
              直接对控制台作操作,比如显示器即为直接写频方式显示
int       printf(char   *format[,argument,…])   发送格式化字符串输出给控制台(显示器)
              使用BIOS进行输出
int       vprintf(char   *format,Valist   param)   发送格式化字符串输出给控制台(显示器)
              使用BIOS进行输出,参数从Valist   param中取得
int       cprintf(char   *format[,argument,…])   发送格式化字符串输出给控制台(显示器),
              直接对控制台作操作,比如显示器即为直接写频方式显示
int       vcprintf(char   *format,Valist   param)发送格式化字符串输出给控制台(显示器),
              直接对控制台作操作,比如显示器即为直接写频方式显示,
              参数从Valist   param中取得
int       sprintf(char   *string,char   *format[,argument,…])
                将字符串string的内容重新写为格式化后的字符串
int       vsprintf(char   *string,char   *format,Valist   param)
                将字符串string的内容重新写为格式化后的字符串,参数从Valist   param中取得
int       rename(char   *oldname,char   *newname)将文件oldname的名称改为newname
int       ioctl(int   handle,int   cmd[,int   *argdx,int   argcx])
                本函数是用来控制输入/输出设备的,请见下表:
                ┌───┬────────────────────────────┐
                │cmd值   │功能                                                                                                         │
                ├───┼────────────────────────────┤
                │     0       │取出设备信息                                                                                         │
                │     1       │设置设备信息                                                                                         │
                │     2       │把argcx字节读入由argdx所指的地址                                                 │
                │     3       │在argdx所指的地址写argcx字节                                                         │
                │     4       │除把handle当作设备号(0=当前,1=A,等)之外,均和cmd=2时一样   │
                │     5       │除把handle当作设备号(0=当前,1=A,等)之外,均和cmd=3时一样   │
                │     6       │取输入状态                                                                                             │
                │     7       │取输出状态                                                                                             │
                │     8       │测试可换性;只对于DOS   3.x                                                                 │
                │     11     │置分享冲突的重算计数;只对DOS   3.x                                                 │
                └───┴────────────────────────────┘
int       (*ssignal(int   sig,int(*action)())()执行软件信号(没必要使用)
int       gsignal(int   sig)                                       执行软件信号(没必要使用)

int       _open(char   *pathname,int   access)为读或写打开一个文件,
                按后按access来确定是读文件还是写文件,access值见下表
                ┌──────┬────────────────────┐
                │access值         │意义                                                                         │
                ├──────┼────────────────────┤
                │O_RDONLY         │读文件                                                                     │
                │O_WRONLY         │写文件                                                                     │
                │O_RDWR             │即读也写                                                                 │
                │O_NOINHERIT   │若文件没有传递给子程序,则被包含                   │
                │O_DENYALL       │只允许当前处理必须存取的文件                         │
                │O_DENYWRITE   │只允许从任何其它打开的文件读                         │
                │O_DENYREAD     │只允许从任何其它打开的文件写                         │
                │O_DENYNONE     │允许其它共享打开的文件                                     │
                └──────┴────────────────────┘
int       open(char   *pathname,int   access[,int   permiss])为读或写打开一个文件,
                按后按access来确定是读文件还是写文件,access值见下表
                ┌────┬────────────────────┐
                │access值│意义                                                                         │
                ├────┼────────────────────┤
                │O_RDONLY│读文件                                                                     │
                │O_WRONLY│写文件                                                                     │
                │O_RDWR     │即读也写                                                                 │
                │O_NDELAY│没有使用;对UNIX系统兼容                                   │
                │O_APPEND│即读也写,但每次写总是在文件尾添加               │
                │O_CREAT   │若文件存在,此标志无用;若不存在,建新文件   │
                │O_TRUNC   │若文件存在,则长度被截为0,属性不变               │
                │O_EXCL     │未用;对UNIX系统兼容                                           │
                │O_BINARY│此标志可显示地给出以二进制方式打开文件     │
                │O_TEXT     │此标志可用于显示地给出以文本方式打开文件│
                └────┴────────────────────┘
                permiss为文件属性,可为以下值:
                  S_IWRITE允许写     S_IREAD允许读     S_IREAD|S_IWRITE允许读、写
int       creat(char   *filename,int   permiss)     建立一个新文件filename,并设定
              读写性。permiss为文件读写性,可以为以下值
                S_IWRITE允许写     S_IREAD允许读     S_IREAD|S_IWRITE允许读、写
int     _creat(char   *filename,int   attrib)     建立一个新文件filename,并设定文件
            属性。attrib为文件属性,可以为以下值
                FA_RDONLY只读     FA_HIDDEN隐藏     FA_SYSTEM系统
int       creatnew(char   *filenamt,int   attrib)   建立一个新文件filename,并设定文件
              属性。attrib为文件属性,可以为以下值
                  FA_RDONLY只读     FA_HIDDEN隐藏     FA_SYSTEM系统
int       creattemp(char   *filenamt,int   attrib)   建立一个新文件filename,并设定文件
              属性。attrib为文件属性,可以为以下值
                  FA_RDONLY只读     FA_HIDDEN隐藏     FA_SYSTEM系统
int       read(int   handle,void   *buf,int   nbyte)从文件号为handle的文件中读nbyte个字符
              存入buf中
int     _read(int   handle,void   *buf,int   nbyte)从文件号为handle的文件中读nbyte个字符
              存入buf中,直接调用MSDOS进行操作.
int       write(int   handle,void   *buf,int   nbyte)将buf中的nbyte个字符写入文件号
              为handle的文件中
int     _write(int   handle,void   *buf,int   nbyte)将buf中的nbyte个字符写入文件号
              为handle的文件中
int       dup(int   handle)   复制一个文件处理指针handle,返回这个指针
int       dup2(int   handle,int   newhandle)   复制一个文件处理指针handle到newhandle
int       eof(int   *handle)检查文件是否结束,结束返回1,否则返回0
long     filelength(int   handle)   返回文件长度,handle为文件号
int       setmode(int   handle,unsigned   mode)本函数用来设定文件号为handle的文件的打
              开方式

int       getftime(int   handle,struct   ftime   *ftime)   读取文件号为handle的文件的时间,
                并将文件时间存于ftime结构中,成功返回0,ftime结构如下:
                ┌─────────────────┐
                │struct   ftime                                             │
                │{                                                                   │
                │   unsigned   ft_tsec:5;   /*秒*/               │
                │   unsigned   ft_min:6;     /*分*/               │
                │   unsigned   ft_hour:5;   /*时*/               │
                │   unsigned   ft_day:5;     /*日*/               │
                │   unsigned   ft_month:4;/*月*/               │
                │   unsigned   ft_year:1;   /*年-1980*/     │
                │}                                                                   │
                └─────────────────┘
int       setftime(int   handle,struct   ftime   *ftime)   重写文件号为handle的文件时间,
              新时间在结构ftime中.成功返回0.结构ftime如下:
                ┌─────────────────┐
                │struct   ftime                                             │
                │{                                                                   │
                │   unsigned   ft_tsec:5;   /*秒*/               │
                │   unsigned   ft_min:6;     /*分*/               │
                │   unsigned   ft_hour:5;   /*时*/               │
                │   unsigned   ft_day:5;     /*日*/               │
                │   unsigned   ft_month:4;/*月*/               │
                │   unsigned   ft_year:1;   /*年-1980*/     │
                │}                                                                   │
                └─────────────────┘
long     lseek(int   handle,long   offset,int   fromwhere)   本函数将文件号为handle的文件
                的指针移到fromwhere后的第offset个字节处.
                  SEEK_SET   文件开关       SEEK_CUR   当前位置       SEEK_END   文件尾
long     tell(int   handle)   本函数返回文件号为handle的文件指针,以字节表示
int       isatty(int   handle)本函数用来取设备handle的类型
int       lock(int   handle,long   offset,long   length)       对文件共享作封锁
int       unlock(int   handle,long   offset,long   length)   打开对文件共享的封锁
int       close(int   handle)   关闭handle所表示的文件处理,handle是从_creat、creat、
                creatnew、creattemp、dup、dup2、_open、open中的一个处调用获得的文件处理
                成功返回0否则返回-1,可用于UNIX系统
int     _close(int   handle)   关闭handle所表示的文件处理,handle是从_creat、creat、
              creatnew、creattemp、dup、dup2、_open、open中的一个处调用获得的文件处理
              成功返回0否则返回-1,只能用于MSDOS系统

FILE   *fopen(char   *filename,char   *type)   打开一个文件filename,打开方式为type,
                并返回这个文件指针,type可为以下字符串加上后缀
            ┌──┬────┬───────┬────────┐
            │type│读写性     │文本/2进制文件│建新/打开旧文件   │
            ├──┼────┼───────┼────────┤
            │r       │读             │文本                     │打开旧的文件         │
            │w       │写             │文本                     │建新文件                 │
            │a       │添加         │文本                     │有就打开无则建新│
            │r+     │读/写       │不限制                 │打开                         │
            │w+     │读/写       │不限制                 │建新文件                 │
            │a+     │读/添加   │不限制                 │有就打开无则建新│
            └──┴────┴───────┴────────┘
            可加的后缀为t、b。加b表示文件以二进制形式进行操作,t没必要使用
            例:   ┌──────────────────┐
                    │#include <stdio.h>                                       │
                    │main()                                                             │
                    │{                                                                       │
                    │   FILE   *fp;                                                     │
                    │   fp=fopen( "C:\\WPS\\WPS.EXE ", "r+b ");│
                    └──────────────────┘
FILE   *fdopen(int   ahndle,char   *type)
FILE   *freopen(char   *filename,char   *type,FILE   *stream)
int       getc(FILE   *stream)     从流stream中读一个字符,并返回这个字符
int       putc(int   ch,FILE   *stream)向流stream写入一个字符ch
int       getw(FILE   *stream)   从流stream读入一个整数,错误返回EOF
int       putw(int   w,FILE   *stream)向流stream写入一个整数
int       ungetc(char   c,FILE   *stream)   把字符c退回给流stream,下一次读进的字符将是c
int       fgetc(FILE   *stream)   从流stream处读一个字符,并返回这个字符
int       fputc(int   ch,FILE   *stream)   将字符ch写入流stream中
char   *fgets(char   *string,int   n,FILE   *stream)   从流stream中读n个字符存入string中
int       fputs(char   *string,FILE   *stream)   将字符串string写入流stream中
int       fread(void   *ptr,int   size,int   nitems,FILE   *stream)   从流stream中读入nitems
              个长度为size的字符串存入ptr中
int       fwrite(void   *ptr,int   size,int   nitems,FILE   *stream)   向流stream中写入nitems
              个长度为size的字符串,字符串在ptr中
int       fscanf(FILE   *stream,char   *format[,argument,…])   以格式化形式从流stream中
              读入一个字符串
int       vfscanf(FILE   *stream,char   *format,Valist   param)   以格式化形式从流stream中
              读入一个字符串,参数从Valist   param中取得
int       fprintf(FILE   *stream,char   *format[,argument,…])     以格式化形式将一个字符
              串写给指定的流stream
int       vfprintf(FILE   *stream,char   *format,Valist   param)     以格式化形式将一个字符
              串写给指定的流stream,参数从Valist   param中取得
int       fseek(FILE   *stream,long   offset,int   fromwhere)   函数把文件指针移到fromwhere
              所指位置的向后offset个字节处,fromwhere可以为以下值:
              SEEK_SET   文件开关       SEEK_CUR   当前位置       SEEK_END   文件尾
long     ftell(FILE   *stream)     函数返回定位在stream中的当前文件指针位置,以字节表示
int       rewind(FILE   *stream)   将当前文件指针stream移到文件开头
int       feof(FILE   *stream)   检测流stream上的文件指针是否在结束位置
int       fileno(FILE   *stream)   取流stream上的文件处理,并返回文件处理
int       ferror(FILE   *stream)   检测流stream上是否有读写错误,如有错误就返回1
void     clearerr(FILE   *stream)   清除流stream上的读写错误
void     setbuf(FILE   *stream,char   *buf)   给流stream指定一个缓冲区buf
void     setvbuf(FILE   *stream,char   *buf,int   type,unsigned   size)
              给流stream指定一个缓冲区buf,大小为size,类型为type,type的值见下表
            ┌───┬───────────────────────────────┐
            │type值│意义                                                                                                                     │
            ├───┼───────────────────────────────┤
            │_IOFBF│文件是完全缓冲区,当缓冲区是空时,下一个输入操作将企图填满整个缓│
            │             │冲区.在输出时,在把任何数据写到文件之前,将完全填充缓冲区.             │
            │_IOLBF│文件是行缓冲区.当缓冲区为空时,下一个输入操作将仍然企图填整个缓│
            │             │冲区.然而在输出时,每当新行符写到文件,缓冲区就被清洗掉.                 │
            │_IONBF│文件是无缓冲的.buf和size参数是被忽略的.每个输入操作将直接从文   │
            │             │件读,每个输出操作将立即把数据写到文件中.                                             │
            └───┴───────────────────────────────┘
int       fclose(FILE   *stream)   关闭一个流,可以是文件或设备(例如LPT1)
int       fcloseall()                     关闭所有除stdin或stdout外的流
int       fflush(FILE   *stream)   关闭一个流,并对缓冲区作处理
                处理即对读的流,将流内内容读入缓冲区;
                对写的流,将缓冲区内内容写入流。成功返回0
int       fflushall()                     关闭所有流,并对流各自的缓冲区作处理
                处理即对读的流,将流内内容读入缓冲区;
                对写的流,将缓冲区内内容写入流。成功返回0

int       access(char   *filename,int   amode)   本函数检查文件filename并返回文件的属性,
                函数将属性存于amode中,amode由以下位的组合构成
                    06可以读、写               04可以读       02可以写       01执行(忽略的)       00文件存在
            如果filename是一个目录,函数将只确定目录是否存在
            函数执行成功返回0,否则返回-1
int       chmod(char   *filename,int   permiss)   本函数用于设定文件filename的属性
                permiss可以为以下值
                      S_IWRITE允许写     S_IREAD允许读     S_IREAD|S_IWRITE允许读、写
int     _chmod(char   *filename,int   func[,int   attrib]);
              本函数用于读取或设定文件filename的属性,
              当func=0时,函数返回文件的属性;当func=1时,函数设定文件的属性
              若为设定文件属性,attrib可以为下列常数之一
              FA_RDONLY只读     FA_HIDDEN隐藏     FA_SYSTEM系统

posted on 2011-02-25 14:02  陆晓峰  阅读(982)  评论(0编辑  收藏  举报

导航