zoukankan      html  css  js  c++  java
  • c 语言文件操作

    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系统

  • 相关阅读:
    codevs1227 方格取数2 注意数组啊啊啊啊啊啊啊啊啊啊
    codevs1033 蚯蚓的游戏问题 裸最小费用最大流,注意要拆点
    模板题 codevs 1993 草地排水 想学习的请看链接
    java初级易错问题总结
    JAVA基本数据类型所占字节数是多少?
    forword和重定向有什么区别?
    Spring框架注解
    hibernate利用mysql的自增张id属性实现自增长id和手动赋值id并存
    eclispe中安装hibernate插件
    struts2使用模型传值
  • 原文地址:https://www.cnblogs.com/leilei123/p/5085234.html
Copyright © 2011-2022 走看看