zoukankan      html  css  js  c++  java
  • 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系统

  • 相关阅读:
    解决:transform-decorators-legacy 报错
    leetcode刷题笔记 232题 用栈实现队列
    leetcode刷题笔记 231题 2的幂
    leetcode刷题笔记 230题 二叉搜索树中第K小的元素
    leetcode刷题笔记 229题 求众数II
    leetcode刷题笔记 228题 汇总区间
    leetcode刷题笔记 227题 基本计算器II
    leetcode刷题笔记 225题 用队列实现栈
    leetcode刷题笔记 224题 基本计算器
    leetcode刷题笔记 223题 矩形面积
  • 原文地址:https://www.cnblogs.com/luxiaofeng54/p/1964813.html
Copyright © 2011-2022 走看看