• 头文件<stdio.h>


    头文件<stdio.h>声明了三种类型,一些宏和很多执行输入输出的函数。
    1、类型:
    FILE 它是一个对象类型,可以记录控制流需要的所有信息,包括它的文件定位符、指向相关的缓冲的指针、记录是否发生了读/写错误的错误指示符和记录文件是否结束的文件结束符。fpos_t 它是一个对象类型,可以唯一指定文件中的每一个位置所需的所有信息。
    size_t 这是无符号整数类型,它是sizeof关键字的结果。
    2、宏:
    NULL 这个宏是一个空指针常量的值。
    _IOFBF、_IOLBF、IONBF 这些宏扩展了带有特定值的整形常量表达式(它们展开为具有不同值的整数常量表达式),适合作为函数setvbuf的第三个参数使用。
    BUFSIZ 这个宏是一个整数,该整数代表了setbuf函数使用的缓冲区大小。
    EOF 这个宏是一个表示已经到达文件结束的负整数。
    FOPEN_MAX 这个宏是一个整数,该整数代表了系统可以同时打开的文件数量。
    FILENAME_MAX 这个宏是一个整数,该整数代表了字符数组可以存储的文件名的最大长度。
    L_tmpnam 这个宏是一个整数,该整数代表了字符数组可以存储的由 tmpnam 函数创建的临时文件名的最大长度。
    SEEK_CUR、SEEK_END 和 SEEK_SET 它们展开为具有不同值得整数常量表达式,适合作为fseek函数的第三个参数使用。
    TMP_MAX 这个宏是 tmpnam 函数可生成的独特文件名的最大数量。
    stderr、stdin 和 stdout 这些宏是指向 FILE 类型的指针,分别对应于标准错误、标准输入和标准输出流。
    3、函数:
    3.1函数remove
    int remove(const char *filename);
    说明:删除给定的文件名 filename,以便它不再被访问。
    返回值:成功返回0;失败返回非0,在新名字的文件存在的情况下,这个文件的名字任是原始的名字。

    3.2函数tmpfile
    FILE *tmpfile(void);
    说明:以二进制更新模式(wb+)创建临时文件。
    返回值:如果成功返回一个指向被创建的临时文件的流指针;如果文件未被创建,则返回NULL
    3.3函数tmpname
    char *tmpname(char *s);
    说明:生成并返回一个有效的临时文件名,该文件名之前是不存在的。
    参数:s是一个指向字符数组的指针,其中,临时文件名将被存储为 C 字符串。
    返回值:一个指向 C 字符串的指针,该字符串存储了临时文件名。如果 str 是一个空指针,
    则该指针指向一个内部缓冲区,缓冲区在下一次调用函数时被覆盖。如果 str 不是一个空指针
    ,则返回 str。如果函数未能成功创建可用的文件名,则返回一个空指针。
    3.4函数fclose
    int fclose(FILE *stream);
    说明:关闭流 stream。刷新所有的缓冲区。
    参数:这是指向 FILE 对象的指针,该 FILE 对象指定了要被关闭的流。
    返回值:如果流成功关闭,则该方法返回零。如果失败,则返回 EOF。
    3.5函数fflush
    int fflush(FILE *stream);
    说明:刷新流 stream 的输出缓冲区。
    参数:这是指向 FILE 对象的指针,该 FILE 对象指定了一个缓冲流。
    返回值:如果成功,该函数返回零值。如果发生错误,则返回 EOF,且设置错误标识符(即
    feof)。
    3.6函数fopen
    FILE *fopen(const char *filename,const char *mode);
    说明:使用给定的模式 mode 打开 filename 所指向的文件。
    参数:filename是 C 字符串,包含了要打开的文件名称。
    mode 是 C 字符串,包含了文件访问模式。
    "r" 打开一个用于读取的文件。该文件必须存在。
    "w" 创建一个用于写入的空文件。如果文件名称与已存在的文件相同,则会删除
    已有文件的内容,文件被视为一个新的空文件。
    "a" 追加到一个文件。写操作向文件末尾追加数据。如果文件不存在,则创建文
    件。
    "r+" 打开一个用于更新的文件,可读取也可写入。该文件必须存在。
    "w+" 创建一个用于读写的空文件。
    "a+" 打开一个用于读取和追加的文件。
    返回值:该函数返回一个 FILE 指针。否则返回 NULL,且设置全局变量 errno 来标识错误。
    3.7函数freopen
    FILE *freopen(const char *filename,const char *mode,FILE *stream);
    说明:把一个新的文件名 filename 与给定的打开的流 stream 关联,同时关闭流中的旧文件

    参数:filename是 C 字符串,包含了要打开的文件名称。mode是 C 字符串,包含了文件访问
    模式。
    返回值:如果文件成功打开,则函数返回一个指针,指向用于标识流的对象。否则,返回空指
    针。
    3.8函数setbuf
    void setbuf(FILE *stream,char *buf);
    说明:定义流 stream 应如何缓冲。
    参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了一个打开的流。buf是分配给用户
    的缓冲,它的长度至少为 BUFSIZ 字节,BUFSIZ 是一个宏常量,表示数组的长度。
    返回值:该函数不返回任何值。
    3.9函数setvbuf
    int setvbuf(FILE *stream,char *buf,int mode,size_t size);
    说明:定义流 stream 应如何缓冲。
    参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了一个打开的流。buffer是分配给
    用户的缓冲。如果设置为 NULL,该函数会自动分配一个指定大小的缓冲。size是缓冲的大小,
    以字节为单位。mode 指定了文件缓冲的模式
    _IOFBF 全缓冲:对于输出,数据在缓冲填满时被一次性写入。对于输入,缓冲会在请求输入
    且缓冲为空时被填充。
    _IOLBF 行缓冲:对于输出,数据在遇到换行符或者在缓冲填满时被写入,具体视情况而定。
    对于输入,缓冲会在请求输入且缓冲为空时被填充,直到遇到下一个换行符。
    _IONBF 无缓冲:不使用缓冲。每个 I/O 操作都被即时写入。buffer 和 size 参数被忽略。
    返回值:如果成功,则该函数返回 0,否则返回非零值。
    3.10函数fprintf
    int fprintf(FILE *stream,const char *format,...);
    说明:发送格式化输出到流 stream 中。
    参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了流。format是 C 字符串,包含了
    要被写入到流 stream 中的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附
    加参数中指定的值替换,并按需求进行格式化。
    返回值:如果成功,则返回写入的字符总数,否则返回一个负数。
    3.11函数fscanf
    int fscanf(FILE *stream,const char *format,...);
    说明:从流 stream 读取格式化输入。
    参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了流。format -- 这是 C 字符串,
    包含了以下各项中的一个或多个:空格字符、非空格字符 和 format 说明符。
    返回值:如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则
    返回 EOF。

    注:可能发生缓冲区溢出
    3.12函数printf
    int printf(const char *format,...);
    说明:发送格式化输出到标准输出 stdout。
    参数:format是字符串,包含了要被写入到标准输出 stdout 的文本。
    返回值:如果成功,则返回写入的字符总数,否则返回一个负数。
    3.13函数scanf
    int scanf(const char *format,...);
    说明:从标准输入 stdin 读取格式化输入。
    参数:format是 C 字符串,包含了以下各项中的一个或多个:空格字符、非空格字符 和
    format 说明符。
    返回值:如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则
    返回 EOF。

    注:可能发生缓冲区溢出
    3.14函数sprintf
    int sprintf(char *s,const char *format,...);
    说明:发送格式化输出到字符串。
    参数:s是指向一个字符数组的指针,该数组存储了 C 字符串。format是字符串,包含了要被
    写入到字符串 s 的文本。
    返回值:如果成功,则返回写入的字符总数,不包括字符串追加在字符串末尾的空字符。如果
    失败,则返回一个负数。

    注:可能发生缓冲区溢出

    3.15函数sscanf
    int sscanf(const char *s,const char *format,...);
    说明:从字符串读取格式化输入。
    参数:s是 C 字符串,是函数检索数据的源。format -- 这是 C 字符串,包含了以下各项中
    的一个或多个:空格字符、非空格字符 和 format 说明符。
    返回值:如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则
    返回 EOF。

    注:可能发生缓冲区溢出
    3.16函数vfprintf
    int vfprintf(FILE *stream,const char *format,va_list arg);
    说明:使用参数列表发送格式化输出到流 stream 中。
    参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了流。format是 C 字符串,包含了
    要被写入到流 stream 中的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附
    加参数中指定的值替换,并按需求进行格式化。
    返回值:如果成功,则返回写入的字符总数,否则返回一个负数。
    3.17函数vprintf
    int vprintf(const char *format,va_list arg);
    说明:使用参数列表发送格式化输出到标准输出 stdout。
    参数:format -- 这是字符串,包含了要被写入到标准输出 stdout 的文本。arg是一个表示可
    变参数列表的对象。这应被 <stdarg> 中定义的 va_start 宏初始化。
    返回值:如果成功,则返回写入的字符总数,否则返回一个负数。
    3.18函数vsprintf
    int vsprintf(char *s,const char *format,va_list arg);
    说明:使用参数列表发送格式化输出到字符串。
    参数:str是指向一个字符数组的指针,该数组存储了 C 字符串。ormat是字符串,包含了要被
    写入到字符串 str 的文本。arg是一个表示可变参数列表的对象。
    返回值:如果成功,则返回写入的字符总数,否则返回一个负数。

    注:可能发生缓冲区溢出
    3.19函数fgetc
    int fgetc(FILE *stream);
    说明:从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。
    参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了要在上面执行操作的流。
    返回值:该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或
    发生读错误,则返回 EOF。
    3.20函数fgets
    char *fgets(char *s,int n,FILE *stream);
    说明:从指定的流 stream 读取一行,并把它存储在 s 所指向的字符串内。当读取 (n-1) 个
    字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。
    参数:s是指向一个字符数组的指针,该数组存储了要读取的字符串。n是要读取的最大字符数
    (包括最后的空字符)。通常是使用以 s 传递的数组长度。stream是指向 FILE 对象的指针,
    该 FILE 对象标识了要从中读取字符的流。
    返回值:如果成功,该函数返回相同的 str 参数。如果到达文件末尾或者没有读取到任何字符
    ,str 的内容保持不变,并返回一个空指针。
    如果发生错误,返回一个空指针。
    3.21函数fputc
    int fputc(int c,FILE *stream);
    说明:把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标
    识符往前移动。
    参数:c是要被写入的字符。该字符以其对应的 int 值进行传递。stream是指向 FILE 对象的
    指针,该 FILE 对象标识了要被写入字符的流。
    返回值:如果没有发生错误,则返回被写入的字符。如果发生错误,则返回 EOF,并设置错误
    标识符。
    3.22函数fputs
    int fputs(const char *s,FILE *stream);
    说明:把字符串写入到指定的流 stream 中,但不包括空字符。
    参数:s是一个数组,包含了要写入的以空字符终止的字符序列。stream是指向 FILE 对象的指
    针,该 FILE 对象标识了要被写入字符串的流。
    返回值:该函数返回一个非负值,如果发生错误则返回 EOF。
    3.23函数getc
    int getc(FILE *stream);
    说明:从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。
    参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了要在上面执行操作的流。
    返回值:该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或
    发生读错误,则返回 EOF。
    3.24函数getchar
    int getchar(void);
    说明:从标准输入 stdin 获取一个字符(一个无符号字符)。
    返回值:该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或
    发生读错误,则返回 EOF。
    3.25函数gets
    char *gets(char *s);
    说明:从标准输入 stdin 读取一行,并把它存储在 str 所指向的字符串中。当读取到换行符
    时,或者到达文件末尾时,它会停止,具体视情况而定。
    参数:str是指向一个字符数组的指针,该数组存储了 C 字符串。
    返回值:如果成功,该函数返回 str。如果发生错误或者到达文件末尾时还未读取任何字符,
    则返回 NULL。

    注:可能发生缓冲区溢出
    例:

    /////////////////////////////////////////////////////////////////////////////////////////////////////
    #include <stdio.h>
    #include <string.h>

    int main(int argc,char *argv[])
    {
    int flag=0;
    char dest[10];
    gets(dest);

    printf("%s---%d ",dest,flag);
    return 0;
    }

    结果:
    gcc -o t test.c
    ./t
    aaaaaaaaaaaaaa
    aaaaaaaaaaaaaa---24929

    /////////////////////////////////////////////////////////////////////////////////////////////////////
    3.26函数putc
    int putc(int c,FILE *stream);
    说明:把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标
    识符往前移动。
    参数:c是要被写入的字符。该字符以其对应的 int 值进行传递。stream是指向 FILE 对象的
    指针,该 FILE 对象标识了要被写入字符的流。
    返回值:该函数以无符号 c 强制转换为 int 的形式返回写入的字符,如果发生错误则返回
    EOF。
    3.27函数putchar
    int putchar(int c);
    说明:把参数 char 指定的字符(一个无符号字符)写入到标准输出 stdout 中。
    参数:c是要被写入的字符。该字符以其对应的 int 值进行传递。
    返回值:该函数以无符号 c强制转换为 int 的形式返回写入的字符,如果发生错误则返回 EOF

    3.28函数puts
    int puts(const char *s);
    说明:把一个字符串写入到标准输出 stdout,直到空字符,但不包括空字符。换行符会被追加
    到输出中。
    参数:str是要被写入的 C 字符串。
    返回值:如果成功,该函数返回一个非负值,如果发生错误则返回 EOF。
    3.29函数ungetc
    int ungetc(int c,FILE *stream);
    说明:把字符 char(一个无符号字符)推入到指定的流 stream 中,以便它是下一个被读取到
    的字符。
    参数:c是要被推入的字符。该字符以其对应的 int 值进行传递。stream是指向 FILE 对象的
    指针,该 FILE 对象标识了输入流。
    返回值:如果成功,则返回被推入的字符,否则返回 EOF,且流 stream 保持不变。
    3.30函数fread
    size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream);
    说明:从给定流 stream 读取数据到 ptr 所指向的数组中。
    参数:ptr是指向带有最小尺寸 size*nmemb 字节的内存块的指针。size是要读取的每个元素的
    大小,以字节为单位。nmemb是元素的个数,每个元素的大小为 size 字节。stream是指向
    FILE 对象的指针,该 FILE 对象指定了一个输入流。
    返回值:成功读取的元素总数会以 size_t 对象返回,size_t 对象是一个整型数据类型。如果
    总数与 nmemb 参数不同,则可能发生了一个错误或者到达了文件末尾。
    3.31函数fwrite
    size_t fwrite(const void *ptr,size_t size,size_t nmemb,FILE *stream);
    说明:把 ptr 所指向的数组中的数据写入到给定流 stream 中。
    参数:ptr是指向要被写入的元素数组的指针。size是要被写入的每个元素的大小,以字节为单
    位。nmemb是元素的个数,每个元素的大小为 size 字节。stream是指向 FILE 对象的指针,该
    FILE 对象指定了一个输出流。
    返回值:如果成功,该函数返回一个 size_t 对象,表示元素的总数,该对象时一个整型数据
    类型。如果该数字与 nmemb 参数不同,则会显示一个错误。
    3.32函数fgetpos
    int fgetpos(FILE *stream,fpos_t *pos);
    说明:获取流 stream 的当前文件位置,并把它写入到 pos
    参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了流。pos是指向 fpos_t 对象的指
    针。
    返回值:如果成功,该函数返回零。如果发生错误,则返回非零值。
    3.33函数fseek
    int fseek(FILE *stream,long int offset,int whence);
    说明:设置流 stream 的文件位置为给定的偏移 offset,参数 offset 意味着从给定的
    whence 位置查找的字节数。
    参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了流。
    offset是相对 whence 的偏移量,以字节为单位。
    whence是表示开始添加偏移 offset 的位置。它一般指定为下列常量之一:
    SEEK_SET 文件的开头
    SEEK_CUR 文件指针的当前位置
    SEEK_END 文件的末尾
    返回值:如果成功,则该函数返回零,否则返回非零值。
    3.34函数fsetpos
    int fsetpos(FILE *stream,const fpos_t *pos);
    说明:设置给定流 stream 的文件位置为给定的位置。参数 pos 是由函数 fgetpos 给定的位
    置。
    参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了流。
    pos是指向 fpos_t 对象的指针,该对象包含了之前通过 fgetpos 获得的位置。
    返回值:如果成功,该函数返回零值,否则返回非零值,并设置全局变量 errno 为一个正值,
    该值可通过 perror 来解释。
    3.35函数ftell
    long int ftell(FILE *stream);
    说明:返回给定流 stream 的当前文件位置。
    参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了流。
    返回值:该函数返回位置标识符的当前值。如果发生错误,则返回 -1L,全局变量 errno 被设
    置为一个正值。
    3.36函数rewind
    void rewind(FILE *stream);
    说明:设置文件位置为给定流 stream 的文件的开头。
    参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了流。
    返回值:该函数不返回任何值。
    3.37函数clearerr
    void clearerr(FILE *stream);
    说明:清除给定流 stream 的文件结束和错误标识符。
    参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了流。
    返回值:这不会失败,且不会设置外部变量 errno,但是如果它检测到它的参数不是一个有效
    的流,则返回 -1,并设置 errno 为 EBADF。
    3.38函数feof
    int feof(FILE *stream);
    说明:测试给定流 stream 的文件结束标识符。
    参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了流。
    返回值:当设置了与流关联的文件结束标识符时,该函数返回一个非零值,否则返回零。
    3.39函数ferror
    int ferror(FILE *stream);
    说明:测试给定流 stream 的错误标识符。
    参数:stream是指向 FILE 对象的指针,该 FILE 对象标识了流。
    返回值:如果设置了与流关联的错误标识符,该函数返回一个非零值,否则返回一个零值。
    3.40函数perror
    void perror(const char *s);
    说明:把一个描述性错误消息输出到标准错误 stderr。首先输出字符串 str,后跟一个冒号,
    然后是一个空格。
    参数:str是 C 字符串,包含了一个自定义消息,将显示在原本的错误消息之前。
    返回值:该函数不返回任何值.

  • 相关阅读:
    重要网址
    线程同步与异步
    常量指针 和 指针常量
    权限设置
    COM组件技术
    抽象类与接口及其派生类的关系
    C++中 #pragma 的使用方法
    [原创].基于SyntaxHighlighter的Verilog HDL高亮组件
    [转载].图解SDRAM工作流程:仓库物语(高手进阶,终极内存技术指南——完整/进阶版)
    [笔记].原来Notepad++也有列模式
  • 原文地址:https://www.cnblogs.com/Mr-Wenyan/p/7223045.html
Copyright © 2020-2023  润新知