• 【UNIX程序设计教程】标准输入输出


    FILE * fopen(const char * pathname, const char * opentype);

    打开由pathname指定的文件并创建一个与之相连的流。

    int fclose(FILE * stream);

    打开的流通过fclose函数来关闭,在流被关闭前,所有缓冲区的输出将被写出,所有缓冲区的输入将被丢弃。

    FILE * freopen(const char * pathname, const char * opentype, FILE * stream);

    重新打开指定文件,并使之与一个指定的流(stream指定的流)相连。作用类似于fopen函数与fclose函数的合并。先关闭stream指定的流,按照opentype的方式打开pathname指定的文件,并使之与stream指定的流相连接。

    一旦打开一个流,就需要对流进行读写。有3种类型的无格式I/O函数:字符I/O函数,行I/O函数,块I/O函数。

    1.字符I/O函数

    字符输入函数中,getc函数最常用,其它两个基本不予使用。

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


    字符输出函数中,putc函数最常用。

    #include <stdio.h>
    int fputc(int c, FILE * stream);
    int putc(int c, FILE * stream);
    int putchar(int c);
     
    2.行I/O函数
    标准C库中有以下两个函数用于每次读入一行
    #include <stdio.h>
    
    char * fgets(char *s, int count, FILE * stream);
    char * gets(char * s);

    这里着重介绍一下fgets函数。

    作用:从stream指定的流中至多读入一行字符至参数s指定的字符串中,参数count指明字符串s的空间大小。该函数从流中连续读字符直至读到换行符或者读够count -1个字符为止。 所读入的这一行字符包含最后的换行符,存储在参数s指定的数组中,并且在其末尾加一个空字符(\0)作为该字符串结束标志。

    fgets函数比较安全,不会产生溢出,而gets函数没有为字符串s的溢出提供保护,因此我们最好不要使用gets。

    LINUX中的GNU C库专门提供了另外一个一次读入一行的函数getline,此外还扩充了一个更通用的函数getdelim。

    #include <stdio.h>
    
    ssize_t getline(char * * lineptr, size_t * n, FILE * stream);
    ssize_t getdelim(char * * lineptr, size_t * n, int delimter, FILE * stream);
  • 相关阅读:
    如何用redis/memcache做Mysql缓存层?
    孤儿进程和僵尸进程总结
    二叉树的遍历(非递归)
    Linux进程分配内存的两种方式--brk() 和mmap()
    Hbase
    cgroup 分析之CPU和内存部分
    十道海量数据处理面试题与十个方法大总结
    快速定位性能瓶颈,检查出所有资源(CPU、内存、磁盘IO等)的利用率(utilization)、饱和度(saturation)和错误(error)度量,即USE方法
    红黑树
    tcp 两个重要窗口:滑动窗口 和 拥塞窗口
  • 原文地址:https://www.cnblogs.com/qi09/p/1820948.html
Copyright © 2020-2023  润新知