(12)学习C语言新手的第一份代码HelloWorld!每行注释必懂。并说明C的基本程序结构,以及实践用VSCode创建C语言工程,并编译运行,怎么学C语言?怎么编译代码?《小鹅说 C 语言》

暂时无法在飞书文档外展示此内容

1、C 语言 – 基本程序结构

C 程序主要包括以下 5 个部分:

  • 头文件
  • 函数
  • 变量
  • 语句
  • 注释

没学过的同学肯定觉得很抽象

今天让我们先来看看一个最小的 C 程序结构,分析第⼀个 C 语⾔程序(最简单基础程序) – Hello World,可以输出单词 “Hello World”。

2、C 实例 – Hello World

让我们看以下一段简单的代码,可以输出单词 “Hello World”:

#include <stdio.h>                 //头文件
                                   //空白行
/* 我们的第一个 C 程序 */            //注释
int main()                         //函数
{                                  //函数体开始
   printf("Hello, World! \n");     //输出语句
   return 0;                       //结束并返回语句
}                                  //函数体结束

3、接下来我们详细讲解一下上面这段程序:

  1. 程序的第一行 #include <stdio.h> 是预处理器指令,告诉 C 编译器在实际编译之前要包含 stdio.h 的头文件包含该头文件的目的是使用了函数 printf。
  2. 下一行 空白行。``主要是为了分隔代码,美化格式。
  3. 下一行 注释 /* xxx */ , 这里放置程序的注释内容,不执行,将会被编译器忽略。注释符一定要成对出现,不允许嵌套。
  4. 下一行 int main()主函数程序从这里开始执行。此行代码声明了一个 main() 函数,该函数是程序的入口,程序总是从 main() 函数开始执行。
  5. 下一行 { 中的内容是函数体。{}:它们两个必须要成对出现。
  6. 下一行 printf(...) 是一个 C 库的函数,会把 “Hello, World!” 的字符串内容打印到屏幕上显示。

此行代码调用了一个用于格式化输出的函数 printf(),该函数用于输出一行信息,可以简单理解为向控制台输出文字或符号等。printf() 函数括号中的内容称为函数的参数,括号内可以看到输出的字符串 “Hello, world\n”,其中 “\n” 表示换行操作,它不会输出到控制台。

  1. 下一行 return 0; 终止 main() 函数,并返回值 0

此行代码中 return 语句的作用是将函数的执行结果返回,后面紧跟着函数的返回值,返回值一般用 0 或 -1 表示,0 表示正常,-1 表示异常。

  1. 下一行 } 函数体结束

4、一些注意项

很短,简单的几行文字,就创建了一个可以运行的程序,非常神奇。代码虽小,但五脏俱全,综观整个代码,可以总结如下特点:

(1)代码由单词,符号,空白组成。

(2)如同阅读小说一样,C 源代码也是从上往下阅读。也就是 C 源代码的先后顺序是有讲究的。行与行之间也可以有空白行。空白行数也是没有限制的。有的行顶格书写,有的行却又后退了几个空格,这种后退,称为“缩进”。如何缩进,这些也都是有讲究的。

(3)代码中的标点符号并不是随意输入的。每个符号在 C 中都有自己的含义。中出现的符号,有“#”、“<>”、“()”、“\”、“/”、“/”、“{}”、“;”、“””。单词与单词之间用空白分隔,空白可以是空格,也可以是 Tab 制表符。空白的个数没有限制。

(4)代码中不能使⽤中⽂符号,⽐如中文括号和中文分号。

5、在 VScode 编译 & 执行第一个 C 程序

下来让我们看看如何把源代码保存在一个文件中,以及如何编译并运行它。

如果还没有安装或者搭建开发环境,请参考之前的文章:

(2.1)C 语言编程入门 – 开发环境搭建 – 工具归纳

如果不知道怎么搭建 VScode 环境请查看之前的文章

  • VSCode + GCC (MinGW) 安装教程链接:

(2.1.0)C 语言编程入门 – 开发环境搭建 – VSCode + MinGW(1)

(2.1.6)C 语言编程入门 – 开发环境搭建 – C 编译器 最新版本 MinGW 安装

下来让我们看看如何把源代码保存在一个文件中,以及如何编译并运行它。

下面是简单的步骤:

5.1、打开 VSCode -> File(文件)-> Open Folder(打开文件夹)

在这里插入图片描述

5.2、新建 -> 文件夹 -> 文件夹命名为 code(建议不要带中文字符)

在这里插入图片描述

5.3、在弹出的窗口,然后选择该文件夹

在这里插入图片描述

5.4、如果弹出此窗口,选择“是,我信任此作者”即可

在这里插入图片描述

5.5、然后点击 File(文件)-> new File (新建文件)

在这里插入图片描述

5.6、弹出的窗口中,输入 hello.c 文件名

**注意:**这个文件名不要有空格,尽量不要有中文字符,不符合规范

在这里插入图片描述

5.7、然后在弹出的窗口中,选择我们刚刚创建的路径

在这里插入图片描述

5.8、复制下方代码,粘贴到 hello.c 文件中
#include <stdio.h>
int main()
{
   /* 我的第一个 C 程序 */
   printf("Hello, World! \n");
   return 0;
}
5.9、添加上述代码后,然后按 Ctrl+S 保存
5.10、然后点击编译,再点击运行

在这里插入图片描述

或者右键选择 Run Code 直接编译运行,这个需要安装“C/C++ Runner”插件,也在之前的文章里教过大家。

5.11、运行后,看到这个就是成功啦

在这里插入图片描述

6、编译方式选择:

6.1、使用 C/C++ Runner(建议)

如果搭建环境时,安装了该插件,在新建工程后,可以看到菜单栏下方,有这几个按键,我们逐个点击“编译”,“运行”即可,编译完成运行后,可以看到打印了日志。

在这里插入图片描述

在这里插入图片描述

6.2、使用终端命令行(不建议)

打开 Vscode 菜单栏的 Terminal->new Terminal,编译 hello.c,生成可执行文件,然后运行,您可以看到屏幕上显示 “Hello World”。

在这里插入图片描述

到这里,你已经把第一个应用程序运行起来啦。

7、更好玩的程序参考

7.1、生成文本
#include <stdio.h>
#define FILENAME    "./1.txt"
#define WRITEWORDS   "These words are written in file.\n这是新加入的文件内容\n"
int main(){
    FILE *fd = NULL;           //文件描述符
    size_t Nmemb = 1;          //以单次写入某个长度的方式写入的个数
    printf("run start");
    fd = fopen(FILENAME, "a"); //打开一个名为FILENAME的文件,如果该文件夹没有则创建,权限为可读可写。
    if(NULL == fd){            //判断是否打开成功
      perror("open");
                return -1;
    }
    fwrite(WRITEWORDS, sizeof(WRITEWORDS), Nmemb, fd); //往文件写入WRITEWORDS字符串,不覆盖原文内容
    fclose(fd);    //关闭文件
    fd = NULL;     //清空指针
    printf("run end");    while(1);
}
7.2、生成图像
#include <stdio.h>
#include <stdlib.h>
#define w 200
#define h 200
void WriteBMP(char*img,const char* filename)
{
    int l=(w*3+3)/4*4;
    int bmi[]= {l*h+54,0,54,40,w,h,1|3*8<<16,0,l*h,0,0,100,0};
    FILE *fp = fopen(filename,"wb");
    fprintf(fp,"BM");
    fwrite(&bmi,52,1,fp);
    fwrite(img,1,l*h,fp);
    fclose(fp);
}
int main()
{
    char img[w*h*3];
    for(int i=0; i<w*h*3; i++)img[i]=rand()%256;
    WriteBMP(img,"test.bmp");
    system("test.bmp");
    return 0;
}
7.3、批量生成文本
#include <stdio.h>
#include <stdlib.h>

#define FILENAME_FORMAT "./file%d.txt"
#define WRITEWORDS "These words are written in file.\n这是新加入的文件内容\n"

int main(){
    FILE *fd = NULL;
    size_t Nmemb = 1;

    for (int i = 1; i <= 100; i++) {
        char filename[50];
        sprintf(filename, FILENAME_FORMAT, i);
        
        fd = fopen(filename, "a");
        if (NULL == fd){
            perror("open");
            return -1;
        }
        
        fwrite(WRITEWORDS, sizeof(char), sizeof(WRITEWORDS) - 1, fd); 
        fclose(fd);
        fd = NULL;
    }

    return 0;
}

每日一更!

公众号、优快云等博客:小鹅编程笔记

日更较慢有需要完整笔记请私我,C/C++/数据结构-算法/单片机51-STM32-GD32-ESP32/嵌入式/Linux操作系统/uboot/Linux内核-驱动-应用/硬件入门-PCB-layout/Python/后期小程序和机器学习!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鹅编程笔记

你的鼓励将是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值