《21天学通C语言(第7版)》一2.3 学以致用

2.3 学以致用

21天学通C语言(第7版)
介绍完程序的组成部分后,我们来查看各程序有何相似之处。请看程序清单2.2,看是否能识别程序的各个部分。

输入

程序清单2.2list_it.c:计算某人在指定年数后的年份

/* list_it.c - 该程序将显示整个程序的代码,包括行号! */
include <stdio.h>
include <stdlib.h>
define BUFF_SIZE 256
void display_usage(void);
int line;
int main(int argc, char *argv[])
{
    char buffer[BUFF_SIZE];
    FILE *fp;
    if (argc < 2)
    {
        display_usage();
        return 1;
    }
    if ((fp = fopen(argv[1], "r")) == NULL)
    {
        fprintf(stderr, "Error opening file, %s!", argv[1]);
        return(1);
    }
    line = (1);
    while (fgets(buffer, BUFF_SIZE, fp) != NULL)
        fprintf(stdout, "%4d:\t%s", line++, buffer);
    fclose(fp);
    return 0;
}
void display_usage(void)
{
    fprintf(stderr, "\nProper Usage is: ");
    fprintf(stderr, "\n\nlist_it filename.ext\n");
}

输出

/* list_it.c - 该程序将显示整个程序的代码,包括行号! */
include <stdio.h>
include <stdlib.h>
define BUFF_SIZE 256
void display_usage(void);
int line;
int main(int argc, char *argv[])
{
    char buffer[BUFF_SIZE];
    FILE *fp;
    if (argc < 2)
    {
        display_usage();
        return 1;
    }
    if ((fp = fopen(argv[1], "r")) == NULL)
    {
        fprintf(stderr, "Error opening file, %s!", argv[1]);
        return(1);
    }
    line = (1);
    while (fgets(buffer, BUFF_SIZE, fp) != NULL)
        fprintf(stdout, "%4d:\t%s", line++, buffer);
    fclose(fp);
    return 0;
}
void display_usage(void)
{
    fprintf(stderr, "\nProper Usage is: ");
    fprintf(stderr, "\n\nlist_it filename.ext\n");
}

分析

该程序把保存的所有代码内容显示在屏幕上,包括代码的行号。

查看程序清单2.2,分析该程序由哪几个部分组成。必不可少的main()函数位于第8~32行。第2~3行是#include指令。第4行是#define指令,将BUFF_SIZE定义为256。这样处理该值后,如果改变缓冲区大小,则只需修改一行,所有使用BUFF_SIZE的地方都会自动更新。如果硬编码1(hardcode)一个数字如256,在需要更改该值时,就必须逐一查找所有使用该值的代码,以确保更新了所有的相关内容。

第5行void display_usage(void);是函数原型。第34~38行是display_usage()的函数定义。除此之外,该程序还包含许多语句(第13、15、16、19、21、22、27、28、30、31、36和37行)。整个程序的块都括在花括号中。最后,只有一行注释。在大多数程序中,注释都不止一行。

list_it.c程序调用了许多函数,其中只有一个用户自定义函数display_usage()。该程序调用的库函数有第19行的fopen()、第21、28、36和37行的fprintf()、第27行的fgets()和第30行的fclose()。本书将在其他部分详细介绍这些库函数。

时间: 2024-09-17 08:28:34

《21天学通C语言(第7版)》一2.3 学以致用的相关文章

《21天学通C语言(第6版•修订版)》一导读

前 言 21天学通C语言(第6版•修订版) 本书旨在引导读者在21天内学通C语言编程.虽然有来自诸如C++.Java和C#的激烈竞争,但很多初学编程者还是会选择C语言.正如第1天课程介绍的原因,选择C语言可确保您不会误入"歧途". 将本书作为自学C语言的教材是一个明智的决定.虽然市面上有很多有关C语言的图书,但本书介绍C语言的方式最为合理,也让读者学习起来最为容易.本书的前五版都登上了畅销书排行榜,这一事实表明我们的观点得到了读者的认同.本书是按读者每天阅读一章的方式编写的.读者不需要

《21天学通C语言(第6版•修订版)》一1.2 为何要使用C语言

1.2 为何要使用C语言 21天学通C语言(第6版•修订版) 在当前的计算机编程领域中,有大量的高级语言可供选择,如C.Perl.BASIC.Java和C#.这些都是非常卓越的语言,适合用于完成大部分编程任务.虽然如此,但基于以下几个原因,很多计算机专业人员认为C语言是其中最佳的: C语言功能强大.灵活.使用C语言能够完成的工作只受限于您的想象力,语言本身不会给您带来任何约束.C语言可用于完成操作系统.字处理器.图形.电子表格等项目,甚至可用于编写其他语言的编译器. C语言很流行,是专业程序员的

《21天学通C语言(第7版)》一导读

前言 21天学通C语言(第7版) 从书名便可看出,通过学习本书,你可以自学C程序设计语言.在众多语言(如C++.JAVA和C#)中,C仍然是学习程序设计语言的首选.第1课中将详细介绍其中的原因.选择C作为程序设计语言是明智之举. 与市面上其他C语言的书籍相比,本书的讲解逻辑更清晰,初学者更容易理解.之前的6个版本一直在畅销书排行榜上遥遥领先,广受读者赞誉!本书为读者量身定制,每天只需花一小时便可学完一课内容.读者不需要有任何编程经验,当然,如果有其他语言的基础(如BASIC),学起来会更快.本书

《21天学通C语言(第7版)》一6.2 控制程序的执行

6.2 控制程序的执行 21天学通C语言(第7版) C程序默认的执行顺序是自上而下.从main()函数的起始位置开始,逐条执行语句,直至main()函数的末尾.然而,在实际的C程序中,很少严格按这样的顺序执行.C语言提供了各种程序控制语句,方便程序员控制程序的执行顺序.第4课介绍了一种程序控制语句--if语句,接下来介绍另外3种有用的控制语句: for语句: while语句: do...while语句. 6.2.1 for语句 for语句是由一条或多条语句组成的块.for语句有时也被称为for循

《21天学通C语言(第7版)》一2.6 课后研习

2.6 课后研习 21天学通C语言(第7版) 课后研习包含小测验和练习题.小测验帮助读者理解和巩固本课所学概念,练习题有助于读者将理论知识与实践相结合. 2.6.1 小测验 1.在C语言中,用花括号括起来的一组语句叫作什么? 2.每个C程序都必不可少的部分是什么? 3.如何在程序中添加注释?为什么要添加注释? 4.什么是函数? 5.C语言提供了哪两种类型的函数?它们有什么区别? 6.#include指令的有什么用途? 7.注释是否可以嵌套? 8.注释是否能超过一行? 9.包含文件的另一个名称是?

《21天学通C语言(第6版•修订版)》一第1章 C语言概览1.1 C语言简史

第1章 C语言概览 21天学通C语言(第6版•修订版) 欢迎阅读<21天学通C语言>第6版.今天的课程将带领读者开始向精通C语言的程序员进发.今天您将学习以下内容: 为什么说C语言是一种不错的编程语言. 程序开发周期中的各个步骤. 编写.编译并运行您的第一个C语言程序. 由编译器和链接程序所生成的错误消息. 1.1 C语言简史 21天学通C语言(第6版•修订版) 读者可能想知道C语言的起源,为何叫C语言.C语言是由贝尔实验室的Dennis Ritchie于1972年开发的.开发它并非为了消遣,

《21天学通C语言(第6版•修订版)》一1.8 作业

1.8 作业 21天学通C语言(第6版•修订版) 下面的小测验帮助您巩固所学的知识,练习则让您实际应用所学的知识.在阅读下一课时之前,应尽可能理解这些小测验和练习的答案,答案见附录F. 1.8.1 小测验 1.指出C是首选编程语言的三个原因. 2.编译器的功能是什么? 3.程序开发周期中包含哪些步骤? 4.使用您自己的编译器编译程序program1.c时,应执行什么命令? 5.在您的编译器中,完成编译和链接工作只需一个命令,还是需要分别执行命令? 6.C语言源代码文件应使用什么扩展名? 7.FI

《21天学通C语言(第7版)》一2.2 程序的组成部分

2.2 程序的组成部分 21天学通C语言(第7版)接下来,将逐行分析上面的程序示例.我们为程序清单中的每一行都添加了行号,以方便读者定位和查找正在分析和讨论的部分. 2.2.1 main()函数 main()函数位于程序清单2.1的第9~23行.在每个可执行的C程序中,main()函数必不可少.在最简单的情况下,main()函数由函数名main.其后的一对圆括号(其中包含void)和一对花括号({})组成.在大多数编译器中,省略圆括号中的void并不影响程序的运行.但是,ANSI标准规定,应该在

《21天学通C语言(第6版•修订版)》一1.7 问与答

1.7 问与答 21天学通C语言(第6版•修订版)问:如果要将自己编写的程序提供给别人,应提供哪些文件? 答:C语言的优点之一是,它是一种编译型语言.这意味着对源代码进行编译后,将得到一个可执行程序--一个独立的程序.将hello提供给所有有计算机的朋友是完全可能的,您只须将可执行程序hello.exe提供给他们即可.他们不需要源代码文件hello.c和目标文件hello.obj,也不需要C编译器.但获得可执行程序的人必须拥有和您同类型的机器,如PC.Macintosh.Linux机器等. 问:

《21天学通C语言(第7版)》一第1部分 C语言基础 第2课 C程序的组成部分 2.1 简短的C程序

第1部分 C语言基础 21天学通C语言(第7版)本文仅用于学习和交流目的,不代表异步社区观点.非商业转载请注明作译者.出处,并保留本文的原始链接. 第2课 C程序的组成部分 21天学通C语言(第7版)每个C程序都由多个部分组成.本书绝大多数篇幅都在解释各种程序的组成部分以及如何使用它们.为了帮助读者掌握C程序的概况,首先介绍一个完整(但简短)的C程序,并识别其中的每个部分.本课将介绍以下内容: 简短C程序的组成部分每个程序组成部分的用途如何编译并运行程序示例本文仅用于学习和交流目的,不代表异步社