• C Primer Plus(6) 中文版 第13章 文件输入/输出 13.2 标准I/O


    13.2 标准I/O
    与底层I/O相比,标准I/O包除了可移植之外还有两个好处。第一,标准I/O有许多专门的函数简化了处理不同I/O的问题。第二,输入和输出都是缓冲的。也就是说,一次转移一大块信息而不是一字节信息(通常至少是512字节)。例如,当程序读取文件时,一块数据被拷贝到缓冲区(一块
    中介存储区域)。这种缓冲极大地提高了数据传输速率。程序可以检查缓冲区中的字节。缓冲在后台处理,所以让人有逐字符访问的错觉(如果使用底层I/O,要自己完成大部分工作)。
    演示如何用标准I/O读取文件和统计文件中的字符数。该程序使用命令行参数,如果你是Windows用户,在编译后必须在命令提示窗口运行该程序;
    如果你是Macintosh用户,最简单的方式是使用Terminal在命令行形式中编译并运行该程序。或者,如第11章所述,如果在IDE中运行该程序,可以使用Xcode的Product菜单提供命令行参数。或者也可以用puts()和fgets()函数替换命令行参数来获得文件名。
    /* count.c -- using standard I/O */
    #include
    #include // exit() prototype

    int main(int argc, char *argv[])
    {
        int ch;         // place to store each character as read
        FILE *fp;       // "file pointer"
        unsigned long count = 0;
        if (argc != 2)
        {
            printf("Usage: %s filename\n", argv[0]);
            exit(EXIT_FAILURE);
        }
        if ((fp = fopen(argv[1], "r")) == NULL)
        {
            printf("Can't open %s\n", argv[1]);
            exit(EXIT_FAILURE);
        }
        while ((ch = getc(fp)) != EOF)
        {
            putc(ch,stdout);  // same as putchar(ch);
            count++;
        }
        fclose(fp);
        printf("File %s has %lu characters\n", argv[1], count);
        
        return 0;

    /* 输出:

    */ 

  • 相关阅读:
    《HelloGitHub》第 78 期
    java基础07
    MTK平台Metadata的加载(2)——Sensor和3A相关Static加载
    举个栗子~Tableau 技巧(235):用「小提琴图 Violin Plot」 呈现盒须图的数据密集度
    C++拷贝、赋值、移动、析构、默认构造 什么时候会被默认生成delete
    挑战杯 多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉
    熟悉c语言指针
    ANR问题分析定位
    B-树(高阶数据结构)
    mybatis面试题及回答
  • 原文地址:https://blog.csdn.net/weixin_40186813/article/details/126410238