如何在Linux环境下用VI编辑器写C程序编译C程序运行C程序

news2025/1/16 3:43:05

我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重点说一说如何在Linux环境下用VI编辑器写C程序编译C程序运行C程序。

相信大家在Windows环境下写C程序编译C程序运行C程序怎么弄都已经很清楚了,现在我们来看在Linux下如果来做,不用什么基础,直接跟着我就行了。

在linux下我们可以用VI编辑器来做这些事,VI编辑器是一款由加州大学伯克利分校Bill Joy研究开发的文本编辑器。文本编辑器有很多,比如图形模式的gedit、kwrite、OpenOffice,文本模式下的编辑器有vi、vim(vi的增强版本)。vi和vim是我们在Linux中最常用的编辑器。vi或vim是Linux最基本的文本编辑工具,vi或vim虽然没有图形界面编辑器那样点鼠标的简单操作,但vi编辑器在系统管理、服务器管理字符界面中,永远不是图形界面的编辑器能比的。

vi 有三种命令模式

Command(命令)模式,用于输入命令

Insert(插入)模式,用于插入文本

Visual(可视)模式,用于视化的的高亮并选定正文

这三者之间可以通过下图所示的方法进行切换:

等会我们看到后面,如果忘记了怎么切换,那再回到上图来看。这里要说明一下,上图中说的输入iao,是指i,a,o三个字母随便输入一个的意思,不是说要输入iao。然后上图的:wq是指同时输入三个字符:wq,这样就能保存并退出。

如果还是没明白,就按我下面的步骤走一遍就可以理解了。首先,来到linux系统的桌面,用鼠标右键击桌面,如图所示:

然后点击菜单上的“在终端中打开”,于是打开了终端:

打开后,我们输入命令vi test001.c并打回车,这样就打开了VI编辑器并建立一个C语言文件,如下:

打字母i进入编辑模式,开始写代码,比如我们要写一个运算斐波那契数列的程序,如下:

#include<stdio.h>
int Fi(int n)
{
   if(n<1)
      return -1;
   if(n==1||n==2)
      return 1;
   return Fi(n-1)+Fi(n-2);
}
int main()
{
   int count;
   int a;
   printf("please input the count");
   scanf("%d",&count);
   a=Fi(count);
   printf("a=%d\n",a);
   return 0;
}

写入到VI编辑器中就是这样:

好,程序写好了,就按ESC跳出编辑模式,然后打入:wq三个字符再回车进行程序的保存,就是保存到test001.c这个文件里。这时桌面上就会多了一个test001.c的文件。

我们可以双击这个文件打开看看里面是什么,一打开如下:

哈哈,就是我们刚才写的代码。好,我们关掉这个文件,重新来到终端里,我们现在要编译这个程序。如下:

我们输入gcc -o test001 test001.c命令,把test001.c文件编译成一个叫test001的可执行文件。我们这时会发现桌面上多了一个test001的文件,如下图:

你可以右击这个文件看看它的属性,你会发现是一个可执行文件。如果用鼠标直接双击这个文件,会发现一点反应也没有。看来要运行这个文件只能回到终端下。

下面我们来运行这个文件,在终端下打./test001这个命令并回车:

一回车,就会弹出please input the count的语句让你输入一个数字,我输了3,一回车,结果a=2这个结果马上就出来了。这样,一个C程序从编写到编译,再到运行,就完完整整的演示结束了。

在C语言中,main()是主函数,任意一个C程序的入口和出品都位于这个主函数中。其他的功能函数都是在主函数中调用实现的,并不都写在主函数中。定义的功能函数就如同一个变量,需要先声明后定义,函数的声明是让编译器知道函数的名称、参数、返回值类型等基本信息;函数的定义是让编译器知道函数的功能。

上述功能的函数的声明可以写成如下形式:

int Fi(int n);

若将函数的定义放在调用函数之前,就可以省略函数的声明,此时函数的定义就包含了函数声明。

作者简介:荔园微风,1981年生,高级工程师,浙大工学硕士,软件工程项目主管,做过程序员、软件设计师、系统架构师,早期的Windows程序员,Visual Studio忠实用户,C/C++使用者,是一位在计算机界学习、拼搏、奋斗了25年的老将,经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/365342.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue 在for循环中动态添加类名及style样式集合

介绍 在vue的 for 循环中&#xff0c;经常会使用到动态添加类名或者样式的情况&#xff0c;实现给当前的选中的 div 添加不同的样式。 动态添加类名 提示&#xff1a; 所有动态添加的类名&#xff0c;放在表达式里都需要添加引号&#xff0c;进行包裹。 通过 对象 的形式&a…

Git ---- Git 分支操作

Git ---- Git 分支操作1. 什么是分支2. 分支的好处3. 分支的操作1. 查看分支2. 创建分支3. 修改分支4. 切换分支5. 合并分支5. 产生冲突4. 创建分支和切换分支图解1. 什么是分支 在版本控制过程中&#xff0c;同时推进多个任务&#xff0c;为每个任务&#xff0c;我们就可以创…

【已解决】安装cv2时Building wheel for opencv-python终端卡死

目录1 问题背景2 问题探索3 问题解决4 告别Bug1 问题背景 环境&#xff1a; Ubuntu20.04Python3.6 现象&#xff1a;终端输出类似下面的命令&#xff0c;并卡住不动 Building wheel for opencv-python (PEP 517) ... 2 问题探索 首先&#xff0c;OpenCV较旧的Python版本不需要…

什么是自动化运维?为什么选择Python做自动化运维?

“Python自动化运维”这个词&#xff0c;想必大家都听说过&#xff0c;但是很多人对它并不了解&#xff0c;也不知道是做什么的&#xff0c;那么你对Python自动化运维了解多少呢?跟着蛋糕往下看。 什么是Python自动化运维? 随着技术的进步、业务需求的快速增长&#xff0c;…

网友爆料奇葩leader:日报要精确到0.5小时,每晚检查!每周写周计划,评审ABCD等级,午休不许刷手机、看视频、玩游戏!...

这样的leader你能接受吗&#xff1f;一位网友吐槽&#xff1a;一个团队6个人&#xff0c;加上leader一共7个人。leader要求每天写日报&#xff0c;并且要精确到0.5小时&#xff0c;格式必须正确&#xff0c;每天晚上都看&#xff0c;下班后各种问进度。每周一要写周计划&#x…

IM即时通讯构建企业协同生态链

在当今互联网信息飞速发展的时代&#xff0c;随着企业对协同办公要求的提高&#xff0c;协同办公的定义提升到了智能化办公的范畴。大多企业都非常重视构建连接用户、员工和合作伙伴的生态平台&#xff0c;利用即时通讯软件解决企业内部的工作沟通、信息传递和知识共享等问题。…

Pytorch 网络结构的可视化

在构建网络的过程中&#xff0c;需要查看网络结构&#xff0c;以便于优化&#xff0c;使用Pytorch常用的可视化工具有 1.Hidden layer myNet U_Net() print(myNet)# ## 可视化卷积神经网络,MyConvnet是定义的神经网络结构 hl_graph hl.build_graph(myNet, torch.zeros([1, 3…

国产蓝牙耳机哪个好用?国产好用的蓝牙耳机推荐

现如今&#xff0c;国产蓝牙耳机越来越受到人们关注&#xff0c;国产蓝牙耳机近几年的发展愈发迅猛&#xff0c;配置上相对于非国产蓝牙耳机来说也毫不逊色。那么&#xff0c;国产蓝牙耳机哪个好用&#xff1f;下面&#xff0c;我来给大家推荐几款好用的蓝牙耳机&#xff0c;一…

电脑应用程序在c盘怎么转移到d盘?建议先收藏

电脑应用程序在c盘怎么转移到d盘&#xff1f;很多小伙伴第一反应就是直接剪切&#xff0c;这种方法对于普通文件来说很简单、也很方便&#xff0c;只需执行CtrlX就能办到&#xff0c;然而对于已安装的应用程序&#xff0c;这并不是明智的做法。因为直接剪切粘贴后&#xff0c;应…

【概念辨析】二维数组传参的集中可能性

一、二维数组传参竟然不是用二级指针进行接收&#xff1f; 今天进行再一次的二级指针学习时&#xff0c;发现了一条以前没怎么注意过的知识点&#xff1a;二维数组进行传参只能用二维数组&#xff08;不能省略列&#xff09;进行接收或者是数组指针。 问题复现代码如下&#xf…

ChatGPT 编写模式:如何高效地将思维框架赋予 AI ?

如何理解 Prompt &#xff1f;Prompt Enginneeringprompt 通常指的是一个输入的文本段落或短语&#xff0c;作为生成模型输出的起点或引导。prompt 可以是一个问题、一段文字描述、一段对话或任何形式的文本输入&#xff0c;模型会基于 prompt 所提供的上下文和语义信息&#x…

现有安全技术

现有的安全技术 防火墙技术 数据机密性技术 防火墙技术比较静态地保护网络支付涉及的客户端网络商家网络、金融专用网络等网络级的安全&#xff0c;数据传输过程中的安全性则需要数据机密性技术进一步给以保护 我们将源信息称为明文。为了保护明文&#xff0c;将其通过某种…

LMR23630APQDRRTQ1应用INA2181A1QDGSRQ1电流检测放大器电路图

LMR23630/LMR23630-Q1 SIMPLE SWITCHER降压转换器是易于使用的36V、3A同步降压稳压器。该器件的宽输入电压范围为 4.5V 至 36V&#xff0c;适用于调节从工业到汽车等各类应用中非稳压电源的电源调理。采用了峰值电流模式控制&#xff0c;以实现对环路补偿和逐周期电流限制的简单…

Docker 容器命令 和安装各种镜像环境

CentOS安装Docker 1.1.卸载&#xff08;可选&#xff09; 如果之前安装过旧版本的Docker&#xff0c;可以使用下面命令卸载&#xff1a; yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotat…

Qt-FFmpeg开发-保存视频流裸流(11)

Qt-FFmpeg开发-保存视频流裸流&#x1f4c0; 文章目录Qt-FFmpeg开发-保存视频流裸流&#x1f4c0;1、概述&#x1f4f8;2、实现效果&#x1f4bd;3、FFmpeg保存裸流代码流程&#x1f4a1;4、主要代码&#x1f50d;5、完整源代码&#x1f4d1;更多精彩内容&#x1f449;个人内容…

【HTML】我的花儿我做主~ 指定花瓣的数量,生成花朵~

效果图 前言&#xff08;赛时灵感&#xff09; 在比赛开始前&#xff0c;就一直没有灵感&#xff0c;不知道参与哪个赛道。也还不知道用啥去做。 直到比赛开始&#xff0c;还是没想到。 最后在比赛快要结束的第五天三更半夜的时候&#xff1b; 突然想到&#xff0c;既然要浪漫&…

每日学术速递2.23

Subjects: Robotics 1.On discrete symmetries of robotics systems: A group-theoretic and data-driven analysis ​ 标题&#xff1a;关于机器人系统的离散对称性&#xff1a;群论和数据驱动分析 作者&#xff1a;Daniel Ordonez-Apraez, Mario Martin, Antonio Agudo, F…

python中的取整、四舍五入和输出小数点后n位

各种取整 1.int是向下取整 2.math.ceil(num)是向上取整 3.math.floor(num)是向下取整 4.round(num)一般情况下是四舍五入取整&#xff08;round毛病多&#xff09; 四舍五入 1.round()可以四舍五入 2.int()也可以 这样写&#xff08;数后面0.5&#xff09;&#xff1a…

Python 爬虫通用代码框架代码示例

刚开始入门学习python爬虫会遇到各种各样的问题&#xff0c;如果以当时的学识想必处理起来也十分困难&#xff0c;那么&#xff0c;如果你拥有良好的编程习惯会让你轻松很多。 当我们在使用Requests库时经常遇到的问题无非是网络问题&#xff0c;连接的超时问题&#xff0c;或…

设计模式C++实现25:解释器模式(Interpreter)

部分内容参考大话设计模式第27章&#xff1b;本实验通过C语言实现。 一 基本原理 意图&#xff1a;给定一个语言&#xff0c;定义其文法的一种表示&#xff0c;并定义一个解释器&#xff0c;这个解释器使用该表示来解释语言中的句子。 上下文&#xff1a;如果业务规则频繁变…