• [Linux学习笔记]标准输入输出


    (一)关于流和缓存操作的函数:在头文件<stdio.h>中定义了三个预定义指针,分别是stdin、stdout、和stderr,它们分别代表进程的标准输入、标准输出和标准出错流。

             缓存有三种方式:全缓存、行缓存和不带缓存。UNIX的默认缓存类别:标准错误无缓存,终端设备流为行缓存,其他为全缓存。

    1.打开操作

    (1)fopen、freopen和fdopen函数

    作用:打开一个标准I/O流。freopen函数主要用于将一个指定的文件打开为一个预定义的流:stdin、stdout和stderr。fdopen函数常用于由创建管道和网络通信通道函数获得的描述符。

    格式:

    #include <stdio.h>
    FILE *fopen(const char *file, const char *type);
    FILE *freopen(const char *file, constchar *type, FILE *fp);
    FILE *fdopen(int filedes, const char *type);

    返回值:成功则返回文件指针,失败返回NULL。
    (2)fclose函数:用于关闭一个流。

    格式:

    #include <stdio.h>
    int fclose(FILE *fp);

    返回值:成功为0,失败为EOF为文件结束符标志。

    2.读操作

    3种度操作:每次读写一个字符的I/O、每次读写一行I/O(使用fgets和fputs函数)和直接I/O(使用fread和fwrite函数)

    (1)getc、fgetc和getchat函数

    作用:用于一次读取一个字符

    格式:

    #include <stdio.h>
    int getc(FILE *fp);
    int fgetc(FILE *fp);
    int getchar(void);

    (2)ferror、feof和clearerr函数

    作用:用于流的错误处理,为了区分溢出或者是出错

    格式:

    #include <stdio.h>
    int ferrpr(FILE *fp);
    int feof(FILE *fp);
    void clesrerr(FILE *fp);

    (3)ungetc函数:用于从一个流读出的字符再送回流中。

    格式:

    #include <stdio.h>
    int ungetc(int c, FILE *fp);

    3.写操作

    putc、fputc和putchar函数

    作用:对应于上面的输入函数

    格式:

    #include <stdio.h>
    int putc(int c, FILE *fp);
    int fputc(int c, FILE *fp);
    int putchar(int c);

    (二)I/O类型

    1.一行操作I/O

    (1)gets和fgets函数

    作用:给指定的缓冲区每次输入一行

    格式:

    #include <stdio.h>
    char *fgets(char *buf, int n, FILE *fp);
    char *gets(char *buf);

    (2)fputs和puts函数

    作用:每次输出一行到指定的流

    格式:

    #include <stdio.h>
    int fput(const cahr *string, FILE *fp);
    int put(const char *string);

    2.二进制I/O

    fread和fwrite

    这是对整个结构的一次读写

    格式:

    #include <stdio.h>
    size_t fread(void *ptr, size_t size, size_t nobj,FILE *fp);
    size_t fwrite(const void *ptr, size_t size, size_t nobj,FILE *fp);

    3.缓冲区I/O

    read和write函数

    [格式参见此文章]

    4.格式化I/O

    scanf和printf函数

    [不做介绍]

    作者:涵曦www.hanxi.cc
    出处:hanxi.cnblogs.com
    GitHub:github.com/hanxi
    Email:im.hanxi@gmail.com
    文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    《 Skynet 游戏服务器开发实战》

  • 相关阅读:
    EF4.1中诡异的GUID为空问题
    asp.net mvc3 Razor引擎中@使用规则小记
    【推荐】JS面象对象编程视频教程
    【转】【More Effective C#】IEnumerable和IQueryable的那点事
    【你有更好的算法吗?】合并重叠时间段算法
    jquery处理textarea中的手动换行
    实例讲解遗传算法——基于遗传算法的自动组卷系统【理论篇】
    架设自己的NuGet服务器
    C#中用SelectSingleNode方法解析带有多个命名空间的XML文件
    解析入口参数为实体的表达式树
  • 原文地址:https://www.cnblogs.com/hanxi/p/2034343.html
Copyright © 2020-2023  润新知