Programming abstractions in C阅读笔记:p139-p143

这篇具有很好参考价值的文章主要介绍了Programming abstractions in C阅读笔记:p139-p143。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

《Programming Abstractions In C》学习第55天,p139-p140,总结如下:

一、技术总结

1.文件I/O操作

文件I/O操作可以分为一下这些步骤:

(1)声明文件指针对象。

File *infile;

(2)打开文件

fopen()。打开文件的模式有“r”, “w”, "a"三种模式。

(3)传输数据

读取文件的方式可以是character by character( getc()/putc() ),也可以是line by line( fget()/fput() )。

(4)关闭文件

fclose()。

2.文件I/O操作示例:复制文件

#include <stdio.h>
#include <stdbool.h> // for bool, true, false data type
#include <stdlib.h> // for exit()

void CopyRemovingComments(FILE *infile, FILE *outfile);

int main() {
    // 声明文件指针对象
    FILE *infile, *outfile;
    char *infileName, *outfileName;

    /*
     * 打开文件:fopen()
     * 如果文件不存在,则返回NULL,所以需要检查
     */
    infileName = "D:\\CProject\\chater3.4\\jabber.txt"; // 这里使用的是绝对路径,也可以使用相对路径
    outfileName = "D:\\CProject\\chater3.4\\jabbercopy.txt";
    infile = fopen(infileName, "r");
    if (infile == NULL) {
        printf("Cannot open input file: %s \n", infileName);
        exit(0);
    }

    /*
     * 传输数据
     * 传输数据有很多种方式,例如chracter by character(getc/putc),line by line(fget/fput, ReadLine)
     * 为了解决stdio.h存在的一些问题,作者对stdio进行了封装,封装后得到的的是simpio
     */
    outfile = fopen(outfileName, "w");
    if (outfile == NULL) {
        printf("Cannot open output file: %s \n", outfileName);
        exit(0);
    }

    CopyRemovingComments(infile, outfile);

    /*
     * 关闭文件
     */
    fclose(infile);
    fclose(outfile);
    printf("Copying is completed");

    return 0;
}

void CopyRemovingComments(FILE *infile, FILE *outfile) {
    int ch, nch;
    bool commentFlag; // 这里使用的是stdbool.h接口中的bool

    commentFlag = false; // 这里使用的是stdbool.h接口中的false,书中使用的是封装后的FALSE

    while ((ch = getc(infile)) != EOF) {
        if (commentFlag) {
            if (ch == '*') {
                nch = getc(infile); //
                if (nch == '/') {
                    commentFlag = false;
                } else {
                    ungetc(nch, infile);
                }
            }
        } else {
            if (ch == '/') {
                nch = getc(infile);
                if (nch == '*') {
                    commentFlag = true;
                } else {
                    ungetc(nch, infile);
                }
            }
            if (!commentFlag) {
                putc(ch, outfile);
            }
        }
    }
}

二、英语总结

1.endpoint什么意思?

答:c.the end of sth(终点)。

2.transfer什么意思?

答:transfer也是一个在计算机相关资料中经常看到的词。p140, For an input file, the function read data from the file into your program; for an output file, the function transfer data from the program to the file。数据从文件到程序中,或者从程序中到文件,即是一种transfer。通过该例句,对tranfer有一个形象的了解。

3.intermix什么意思?

答:

(1)解释:vi/vt. to combine two or more different things。

(2)搭配:intermix sth with sth。

(3)例句:p140, Doing so allows you to intermix numeric data with strings and other data types。

三、参考资料

1. 编程

(1)Eric S.Roberts,《Programming Abstractions in C》:https://book.douban.com/subject/2003414

2. 英语

(1)Etymology Dictionary:https://www.etymonline.com

(2) Cambridage Dictionary:https://dictionary.cambridge.org

欢迎搜索及关注:编程人(a_codists)文章来源地址https://www.toymoban.com/news/detail-692118.html

到了这里,关于Programming abstractions in C阅读笔记:p139-p143的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Programming abstractions in C阅读笔记:p123-p126

    《Programming Abstractions In C》学习第50天,p123-p126,总结如下: 这也是一个在计算机相关书籍中出现的词,但有时却不是那么好理解,因为它可以指代很多对象,这里做一个记录。示例:p124。 In C, you can use any character array to hold string data. or, more compactly, If you use array notation, the

    2024年02月12日
    浏览(41)
  • 【论文阅读笔记】Endoscopic navigation in the absence of CT imaging

      上一篇的导航导论,是需要先验,也就是需要事先拍摄堆叠的图片(比如CT图等),在体外构建相应的3D模型,再与内窥镜图像进行实时匹配。对于很多情况来说,是无法拥有如此充足的先验的。所以,本文探索的是没有额外CT图像的一个内窥镜导航算法,应用场景是鼻腔

    2024年02月11日
    浏览(52)
  • Functional Programming in Kotlin – Creating Functional

    作者:禅与计算机程序设计艺术 在Kotlin中创建函数式编程并发程序是一种面向对象的编程范式,其中的一些核心概念是: immutable数据结构, 函数作为第一等公民, 协程。本文将详细阐述如何使用Kotlin构建函数式并发程序,涵盖的内容包括异步编程、并发编程、Java内存模型与K

    2024年02月06日
    浏览(38)
  • Abandoning the Bayer-Filter to See in the Dark 论文阅读笔记

    这是CVPR2022的一篇暗图增强的文章,TCL AI Lab与福州大学,韩国延世大学,安徽大学的合作论文 网络以黑暗环境下拍摄的color raw为输入,用一个de-bayer-filter module恢复无拜尔滤波器的raw data(文章认为拜尔滤波器使得光子数量被滤去许多,无拜尔滤波器的摄像机拍摄得到的raw d

    2024年02月16日
    浏览(52)
  • 阅读笔记2:Characterization of Metabolic Patterns in Mouse Oocytes during Meiotic Maturation

    Characterization of metabolic patterns in mouse oocytes during meiotic maturation 作者:Ling Li, Shuai Zhu, Wenjie Shu, …, Xuejiang Guo, Minjian Chen, Qiang Wang 发表期刊:Molecular Cell 发表时间:November 5, 2020 摘要解读 研究背景 : 平衡及时的代谢对于产生高质量的卵子至关重要。然而,支持卵母细胞发展的代

    2024年02月21日
    浏览(49)
  • K8s in Action 阅读笔记——【14】Securing cluster nodes and the network

    迄今为止,创建了 Pod 而不考虑它们允许消耗多少 CPU 和内存。但是,正如将在本章中看到的那样,设置 Pod 预期消耗和允许消耗的最大数量是任何 Pod 定义的重要部分。设置这两组参数可以确保 Pod 只占用 Kubernetes 集群提供的资源中的份额,并且还影响 Pod 在集群中的调度方式

    2024年02月08日
    浏览(48)
  • K8s in Action 阅读笔记——【13】Securing cluster nodes and the network

    Pod中的容器通常在不同的Linux名称空间下运行,这使得它们的进程与其他容器或节点默认名称空间下运行的进程隔离开来。 例如,我们学习到每个Pod都拥有自己的IP和端口空间,因为它使用其自己的网络名称空间。同样,每个Pod也拥有自己的进程树,因为它有自己的PID名称空

    2024年02月11日
    浏览(48)
  • 【论文阅读笔记】Sam3d: Segment anything model in volumetric medical images[

    Bui N T, Hoang D H, Tran M T, et al. Sam3d: Segment anything model in volumetric medical images[J]. arXiv preprint arXiv:2309.03493, 2023.【开源】 本文提出的SAM3D模型是针对三维体积医学图像分割的一种新方法。其核心在于将“分割任何事物”(SAM)模型的预训练编码器与一个轻量级的3D解码器相结合。与

    2024年01月20日
    浏览(46)
  • [论文阅读笔记] TRACE: A Comprehensive Benchmark for Continual Learning In Large Language Models

    TRACE: A Comprehensive Benchmark for Continual Learning In Large Language Models arXiv2023 复旦大学 Benchmark、Continual Learing、LLMs 已经对齐过的大模型 (Aligned LLMs )能力很强,但持续学习能力缺乏关注; 目前CL的benchmark对于顶尖的LLMs来说过于简单,并且在指令微调存在model的potential exposure。(这里的

    2024年01月18日
    浏览(61)
  • 【阅读笔记】Blockchain management and ML adaptation for IoT environment in 5G and beyond ...

    本文是一篇CCF C类文章,作者来自印度旁遮普邦帕蒂拉塔帕工程技术学院计算机科学与工程系 🙋‍♂️张同学 📧zhangruiyuan@zju.edu.cn 有问题请联系我~ 5G 和 B5G有什么区别? 答:5G主要解决了我们熟悉的高清视频、传输速率等问题;而B5G(Beyond-5G)将解决一些应用场景与技术的完

    2023年04月09日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包