当前位置: 首页 > news >正文

入门-C编程基础部分:2、第一个程序

飞书文档https://x509p6c8to.feishu.cn/wiki/DlTywzZTiiHiL0kQpcKcNMu8nle

一、C Hello World 实例

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

#include <stdio.h>
int main()
{
   /* 我的第一个 C 程序 */
   printf("Hello, World! \n");
  
   return 0;
}

接下来我们讲解一下上面这段程序:

  1. 程序的第一行 #include <stdio.h> 是预处理器指令,告诉 C 编译器在实际编译之前要包含 stdio.h 文件。
  2. 下一行 int main() 是主函数,程序从这里开始执行。
  3. 下一行 /*...*/ 将会被编译器忽略,这里放置程序的注释内容。它们被称为程序的注释。
  4. 下一行 printf(...) 是 C 中另一个可用的函数,会在屏幕上显示消息 "Hello, World!"。
  5. 下一行 return 0; 终止 main() 函数,并返回值 0。

二、编译 & 执行 C 程序

下来让我们看看如何把源代码保存在一个文件中,以及如何编译并运行它。下面是简单的步骤:

  1. 打开VSCode
  2. File(文件)->Open Folder(打开文件夹)

在弹出的窗口,选择一个电脑路径(不要带中文字符),新建一个文件夹,然后选择该文件夹

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

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

弹出的窗口中,输入hello.c文件名,这个文件名不要有空格,不要有中文字符

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

复制下方代码,粘贴到hell.c文件中

Plain Text
#include <stdio.h>
int main()
{
   /* 我的第一个 C 程序 */
   printf("Hello, World! \n");
  
   return 0;
}

添加上述代码后,然后按Ctrl+S保存

然后点击编译,再点击运行

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

编译方式选择:

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

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

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

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

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

更好玩的程序参考

生成文本

#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);
}

生成图像

#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;
}

批量生成文本

#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;
}

相关文章:

  • 从零开始学习SLAM | 用四元数插值来对齐IMU和图像帧
  • 基于ESP32-S3 蓝牙SDK封装设计
  • 阿里计算机专业面试宝典1
  • javaweb的基础2
  • 【计算机网络】什么是路由?核心概念与实战详解
  • 群晖如何通过外网访问
  • KingbaseES之KDts迁移SQLServer
  • 安徽京准:GPS北斗卫星时空信号安全防护装置(授时)介绍
  • 【Unity笔记】Unity超时检测器开发:支持自定义重试次数与事件触发
  • AIP-231 批量方法:Get
  • 树莓派超全系列教程文档--(24)本地化设置、SSH及配置防火墙
  • 本地mock服务编写
  • 如何优雅地处理 API 版本控制?
  • 滚轮控制目标臂长度调整相机距离
  • CTF--shell
  • 自动驾驶第一性原理
  • java -jar 如何持久化运行
  • 华三IRF堆叠技术
  • Redis 5.0、6.0 和 7.0 版本的核心更新特性总结
  • flutter 打包mac程序 dmg教程
  • “五一”假期逛上海车展请提前购票,展会现场不售当日票
  • 中国公民在日本被机动车碾压身亡,我使馆发布提醒
  • 辽宁省全力开展辽阳一饭店火灾事故救援处置工作
  • 连演三场,歌剧《义勇军进行曲》在上海西岸大剧院上演
  • 黄晓丹:用“诗心”找到生存的意义
  • 五万吨级半潜船在沪完成装备装载