网资酷

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 70|回复: 0

C语言编程之旅--2第一个程序

[复制链接]

2

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2023-1-15 14:53:29 | 显示全部楼层 |阅读模式
凡事预则立,不预则废
正式开始编程之旅前,需要制定一个小目标。之前看到很多人问『学会C语言后可以做什么?』。其实C语言作为高级语言的老前辈,产生出非常多的优秀作品:Linux Kernel, Nginx, Redis, SQLite, RT-Thread, Tinyhttpd等等。
基本所有教程都喜欢从让C语言初学者从Hello World出发,然后每部分通过特定的示例讲解语言特性。本系列是以独特视角讲解C语言语法,游戏基本所有人都会感兴趣的点,所以就将一个小游戏指定为完成本系列文章后的目标——『命令行贪吃蛇』。
本节目标

看完本节可以:

  • 学习集成开发环境软件的基本使用;
  • 掌握创建工程和文件的方法;
  • 掌握C语言文件基本结构;
  • 掌握C语言基本语法;
  • 了解基本输出使用方法;
本节主要是完成一个『命令行贪吃蛇』欢迎页面的输出,如下图所示:



文件结构

默认启动开发环境会自动加载上次工程,建议每次创建不同工程进行管理。先关闭上一章节创建的工程,点击文件->关闭项目。
创建工程

创建名称为2.1的控制台程序工程。
C语言源码就编写在扩展名为.c的文件中,这样的文件被称为源文件。当然文件名可以改成其他名称,只要文件内容满足要求即可。所有源文件需要放在项目页的源文件下。



需要在main.c文件中输入如下代码。不要被这么多行数吓到,这里有很多类似的。接下来会对每一部分进行讲解。


头文件
在main.c源文件中,第一行字符比较独特,一行字符以#开始。
#include <文件名称>
#include "文件名称"这里#include后面跟一个文件名称,而这句往往包含在源文件头部,所以也被称为头文件。一般使用<>包含标准或系统级头文件,使用""包含自定义头文件。具体作用在后面小节再做介绍。
入口函数

从源码第3~34全部为main函数的内容。它的基本结构为:



函数可以看做一个黑盒子,有输入并在函数内部对数据进行处理,然后将结果输出出来。举个形象的例子,函数可以理解为一个洗衣店提供的服务,输入的是一堆脏衣服,输出结果是一件件干净衣服。这里的返回值就是干净衣服,main就是洗衣店店名,函数参数表就是一堆脏衣服。
现在需要记住的仅仅是名称为main的函数是整个C语言的入口,想要写程序就必须声明这样一个结构。
而在一对花括号{}内部的主体语句,就是我们主要编写代码的地方。
源码解析

接下来针对主体语句中的逐行讲解。
注释

源码第4行,语句以连续两个左斜杠//开头,这是源代码中的注释语句
//  打印游戏标题注释语句本身不会产生任何效果,程序在执行过程中会直接跳过。初学者可能好奇『那需要注释语句做什么?』其实,注释语句主要是给人看的。一般解释接下来的语句或当行语句作用。另外一种格式是使用一对符号/**/表明注释语句,与//不同的是前者可以注释多行,而后者只能注释单行。可以这样注释:
#include <stdio.h> // 这是头文件,一般源文件都要有

/* 这是多行注释
    接下来会正式开始编码
    先写非常重要main函数
*/
int main(int argc, char *argv[])
{
}标准输出函数

开始介绍第二个函数,它就是标准输出函数printf。这是C标准中规定实现的输出函数,而输出对象就是电脑命令行终端。虽然标准中有规定printf函数,但在使用前需要添加标准输入输出头文件stdio.h。因此,源程序第1行为
#include <stdio.h>当输入错误的头文件std.h或没有包含需要的头文件时,在编译时会返回如下错误





不同头文件中包含的函数不同,后面还会涉及到其他头文件,需要用相关函数时会再介绍。此时,要调用printf函数非常简单,如下所示
printf(字符串);值得注意的是,行尾紧跟英文分号;。它是C语言语句(除注释语句外)结束的标识,一般每行都会有。若忘记写结尾分号,编译时也会返回异常



需要输出的字符串在C语言中,需要包含在""中。字符串内容可包含英文、中文、符号、空格等。在字符串中有\n符号组合,它表示转义字符。比如转义字符\n表示换行,光标会移到下一行开头处继续输出。
因此,源码第5~23行就是完整打印『命令行贪吃蛇』游戏标题,是不是非常酷?一直鼓励学习程序手动输入,但这个排版工作量非常大,很打击人的信心,需要的可以从下方获取排版好的标题字符串。当然也可以通过『点阵字在线生成器』,自己生成或者手动排版想要的标题效果。
################################################################################
####        ####    ######   ########    ########   #######    ##             ##
###          ###    ######   ########    ########   ######    ###             ##
##    ####    ##     #####   ########     #######   #####    ####   ############
##   ######   ##      ####   #######      #######   ####    #####   ############
##   ######   ##      ####   #######      #######   ###    ######   ############
##     #########   #   ###   ######   ##   ######   ##    #######   ############
###        #####   #    ##   ######   ##   ######   #    ########   ############
####         ###   ##   ##   ######   ##   ######        ########            ###
#######       ##   ###   #   #####          #####         #######            ###
###########   ##   ###   #   #####          #####    ##   #######   ############
##   #######  ##   ####      #####           ####   ###    ######   ############
##   #######  ##   ####      ####   ######   ####   ####    #####   ############
##   ######   ##   #####     ####   ######   ####   #####    ####   ############
###           ##   ######    ###   ########   ###   #####    ####   ############
####         ###   ######    ###   ########   ###   ######    ###             ##
######    ######   #######   ##   ##########   ##   #######    ##             ##
################################################################################源码第25~31行全部都是调用标准输出函数,让命令行输出选择游戏难度的游戏选项。这章节暂时不涉及标准输入函数,在后续章节将会学习如何让用户选择想要的选项,并开始游戏。
源码第33行可以省略,在后续函数章节再做详细介绍。
附录A 转义字符

转义字符意义
\a响铃(BEL)
\b退格(BS) ,将当前位置移到前一列
\f换页(FF),将当前位置移到下页开头
\n换行(LF) ,将当前位置移到下一行开头
\r回车(CR) ,将当前位置移到本行开头
\t水平制表(HT)
\v垂直制表(VT)
\'单引号
\"双引号
\\反斜杠
关于本系列





本系列的相关文章
幺零幺零:C语言编程之旅--0前言
最后,希望大家能喜欢这系列,若喜欢也请不要吝惜点赞和收藏o( ̄▽ ̄)d,我们回见。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|网资酷

GMT+8, 2025-3-15 05:33 , Processed in 0.078341 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表