zoukankan      html  css  js  c++  java
  • 《C程序设计语言》笔记 (十五) 参考手册7

    标准库

    ANSI定义的标准函数库
    
    标准库不是C语言本身的构成部分
    
    但是支持标准C的实现会提供该函数库中的函数声明、类型以及宏定义
    
    标准库中的函数 类型以及宏分别在下面的标准头文件中定义:
    
    <assert.h>
    
    <ctype.h>
    
    <errno.h>
    
    <float.h>
    
    <limits.h>
    
    <locale.h>
    
    <math.h>
    
    <setjmp.h>
    
    <signal.h>
    
    <stdarg.h>
    
    <stddef.h>
    
    <stdio.h>
    
    <stdlib.h>
    
    <string.h>
    
    <time.h>
    
    可以通过下列方式访问头文件
    
    #include <头文件>
    
    头文件的包含顺序是任意的,并可以包含任意多次
    
    头文件必须包含在任何外部声明或定义之外
    
    必须在使用头文件中的任意声明之前包含头文件
    
    头文件不一定是源文件
    
    以下划线开头的外部标识符保留给标准库使用
    

      

    输入输出<stdio.h>

    头文件<stdio.h>中定义的输入输出函数、类型以及宏的数目几乎占整个标准库的三分之一
    
    流是与磁盘或其他外围设备关联的数据的源或目的地
    
    尽管在某些系统中(如UNIX),文本流和二进制流是相同的,但标准库任然提供了这两种类型的流
    
    文本流是由文本行组成的序列,每一行包含0个或多个字符并以'
    '结尾
    
    二进制流是由未经处理的字节构成的序列,这些字节记录着内部数据
    
    如果在同一系统中写入二进制流,然后再读取二进制流,则读出和写入的内容完全相同
    
    打开一个流,将把该流和一个文件或设备连接起来,关闭流将断开连接
    
    打开一个文件将返回一个指向FILE类型的对象的指针,该指针记录了控制该流的所有必要信息
    
    程序开始执行时,stdin stdout 和stderr这3个流已经处于打开状态
    

    文件操作

    FILE *fopen(const char *filename,const char *mode);
    
    fopen函数打开filename指定的文件,并返回一个与之关联的流
    
    如果打开失败,则返回NULL
    
    访问模式:
    
    "r"  读
    
    "w" 写,并删除已存在的内容
    
    "a"  追加
    
    "r+"  打开文本文件用于更新
    
    "w+"  创建文本用于更新
    
    "a+"  打开或创建文件用于更新,写文件时追加到文件末尾
    
    FILE *freopen(const char *filename,const char *mode,FILE *stream);
    
    以mode指定的模式打开filename指定的文件,并将该文件关联到stream指定的流
    
    
    成功返回stream,出错返回NULL 
    
    freopen 函数一般用于改变与stdin stdout stderr相关联的文件
    
    
    int fflush(FILE *stream);
    
    对输出流来说,fflush函数将已写到缓冲区但尚未写入文件的所有数据写入文件
    
    对输入流来说,其结果是未定义的
    
    如果在写的过程中方式错误,则返回EOF 否则返回0
    
    fflush(NULL)  将清洗所有的输出流
    
    
    int flose(FILE *stream);
    将所有未写入的数据写入stream中,丢弃缓冲区的所有未读输入数据,释放自动分配的全部缓冲区,最后关闭流
    
    若出错返回EOF,否则返回0
    

      

    int remove(const char *filename);
    
    删除指定的文件,如果删除失败,返回一个非0值.
    
    
    int rename(const char *oldname,const char *newname);
    修改文件名,失败返回非0;
    
    FILE *tmpfile(void);
    
    tmpfile函数以模式"wb+"创建一个临时文件,该文件在被关闭或程序正常结束时自动删除
    
    
    char *tmenam(char s[L_tmpname]);
    
    tmpnam(NULL) 函数创建一个与现有文件名不同的字符串,并返回一个指向一内部静态数组的指针
    
    
    int setvbuf(FILE *stream,char *buf,int mode, size_t size);
    
    setvbuf函数控制流stream的缓冲.
    
    在执行读写以及其他任何操作之前必须调用此函数
    
    
    void setbuf(FILE *stream,char *buf);
    
    如果buf值为NULL,则关闭stream的缓冲
    

      

    格式化输出

    printf函数提供格式化输出转换
    
    int fprintf(FILE *stream,const char *format,...);
    
    fprintf函数按照format说明的格式对输出进行转换,并写到stream中。
    
    返回实际写入的字符数,错误返回负值
    
    
    int sprintf(char *s,const char *format,...);
    
    sprintf函数和printf函数基本相同,但其输出将被写入到字符串 s中,并以''结束
    
    
    vprintf
    
    vfprintf
    
    vsprintf
    
    函数分别对应printf的函数等价
    

      

    格式化输入

    scanf函数处理格式化输入转换
    
    int fscanf(FILE *stream,const char *format,...);
    
    fscanf函数根据格式字符串format从流stream中读取输入,并把转换后的值赋值给后续参数,其中每个参数必须是一个指针
    
    int sscanf(const char *s,const char *format,...);
    
    sscanf函数scanf等价,所不同的是,前者的输入字符来源于字符串s
    

      

    字符输入/输出函数

    int fgetc(FILE *stream);
    
    函数返回stream流的下一个字符,返回类型unsigned char
    
    如果达到文件末尾或发生错误,返回EOF
    
    
    char *fgets(char *s,int n,FILE *stream);
    
    fgets 函数最多将n-1个字符读入到数组s中
    
    当遇到换行符时,把换行符读入到数组s中,读取过程终止
    
    数组以''结尾
    
    到达文件尾或发生错误,返回EOF
    
    
    int fputc(int c,FILE *stream);
    
    fputc函数把字符c输出到stream中
    
    返回写入的字符,出错返回EOF
    
    int fputs(const char *s,FILE *stream);
    
    fputs函数把字符串s输出到stream中,出错返回EOF
    
    
    int getc(FILE *stream);
    getc函数等价于fgetc,所不同的是,当getc函数定义为宏时,它可能多次计算stream的值
    
    
    int getchar(void);
    等价于getc(stdin);
    
    char *gets(char *s);
    把下一个输入行读入的数组中
    
    int putc(int c ,FILE *stream);
    
    
    int putchar(int c);
    
    等价于 putc(c,stdout);
    
    
    int puts(const char *s);
    
    int ungetc(int c,FILE *stream);
    

      

    直接输入/输出函数

    size_t fread(void *ptr,size_t size,size_t nobj,FILE *stream);
    
    
    size_t fwrite(const void *ptr,size_t size,size_t nobj,FILE *stream);
    

      

    文件定位函数

    int fseek(FILE *stream,long offset,int origin);
    
    long ftell(FILE *stream);
    
    
    void rewind(FILE *stream);
    
    int fgetpos(FILE *stream,fpos_t *ptr);
    
    int fsetpos(FILE *stream,const fpos_t *ptr);
    

      

    错误处理函数

    当发生错误或到达文件末尾时,标准库中的许多函数都会设置状态指示符
    
    这些状态指示符可被显式的设置和测试
    
    另外,整型表达式errno可以包含一个错误编号,据此可以进一步了解最近一次出错信息
    
    void clearerr(FILE *stream);
    
    clearerr函数清除与流stream相关的文件结束符合错误指示符
    
    int feof(FILE *stream);
    
    如果设置了与stream流相关的文件结束符,feof函数将返回非0值
    
    int ferror(FILE *stream);
    
    void perror(const char *s);
    
    
    
    fprintf(stderr,"%s,:%s
    ",s"error message");
    

      

  • 相关阅读:
    Google 商店:您的应用静态链接到的 OpenSSL 版本有多个安全漏洞。建议您尽快更新 OpenSSL
    android控件库(2)-仿Google Camera 的对焦效果
    新浪微博客户端(54)-代码重构-将宏定义修改为常量
    android自定义控件(1)-自定义控件属性
    新浪微博客户端(53)-记录用户最近点击表情
    android-解决EditText的inputType为Password时, 字体不一致的问题
    新浪微博客户端(52)-长按或滑动显示表情
    iOS- Terminating app due to uncaught exception 'NSRangeException'
    新浪微博客户端(51)-将表情图片转换为文本
    新浪微博客户端(50)-解决输入Emotion表情逐渐变小的问题
  • 原文地址:https://www.cnblogs.com/dafume/p/7843976.html
Copyright © 2011-2022 走看看