使用VS2015编写C语言程序

news2024/11/25 16:23:20

前面我们给出了一段完整的C语言代码,就是在显示器上输出“C语言中文网”,如下所示:

#include <stdio.h>

int main()

{

    puts("C语言中文网");

    return 0;

}

本节我们就来看看如何通过 VS2015 来运行这段代码。

1) 创建项目(Project)

在 VS2015 下开发程序首先要创建项目,不同类型的程序对应不同类型的项目,初学者应该从控制台程序学起。

打开 VS2015,在上方菜单栏中选择“文件 --> 新建 --> 项目”:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

或者按下Ctrl+Shift+N组合键,都会弹出下面的对话框:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

选择“Win32控制台应用程序”,填写好项目名称,选择好存储路径,点击“确定”按钮即可。

如果你安装的是英文版的 VS2015,那么对应的项目类型是“Win32 Console
Application”。另外还要注意,项目名称和存储路径最好不要包含中文。

点击“确定”按钮后会弹出向导对话框:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

点击“下一步”按钮,弹出新的对话框:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

先取消“预编译头”和“安全开发生命周期检查”这两个选项,再勾选“空项目”,然后点击“完成”按钮就创建了一个新的项目。

感兴趣的读者可以打开 E 盘,会发现多了一个cDemo文件夹,这就是整个项目所在的文件夹。

2) 添加源文件

在“源文件”处右击鼠标,在弹出菜单中选择“添加 -> 新建项”,如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

或者按下Ctrl+Shift+A组合键,都会弹出添加源文件的对话框。如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在“代码”分类中选择C++文件(.cpp),填写文件名,点击“添加”按钮就添加了一个新的源文件。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

小小的提示:C++是在C语言的基础上进行的扩展,C++已经包含了C语言的所有内容,所以大部分的 IDE
只有创建C++文件的选项,没有创建C语言文件的选项。但是这并不影响使用,我们在填写源文件名称时把后缀改为.c即可,编译器会根据源文件的后缀来判断代码的种类。上图中,我们将源文件命名为hello.c

3) 编写代码并生成程序

打开 hello.c,将本节开头的代码输入到 hello.c 中,上图是输入完成以后的效果。

注意:虽然可以将整段代码复制到编辑器,但是我还是强烈建议你手动输入,我敢保证你第一次输入代码会有各种各样的错误,只有把这些错误都纠正了,你才会进步。本教程后续章节还会给出很多示例代码,这些代码一定要手动输入,不要复制后运行成功了就万事大吉。

编译(Compile)

在上方菜单栏中选择“生成 --> 编译”,就完成了 hello.c 源文件的编译工作。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

或者直接按下Ctrl+F7组合键,也能够完成编译工作,这样更加便捷。

如果代码没有错误,会在下方的“输出窗口”中看到编译成功的提示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

编译完成后,打开项目目录(本教程中是 E:\cDemo\)下的 Debug
文件夹,会看到一个名为hello.obj的文件,这就是经过编译产生的中间文件,这种中间文件的专业称呼是目标文件(Object File)。在 VS 和
VC 下,目标文件的后缀都是.obj

链接(Link)

在菜单栏中选择“项目 --> 仅用于项目 --> 仅链接 cDemo”,就完成了 hello.obj 的链接工作,如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果代码没有错误,会在下方的“输出窗口”中看到链接成功的提示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

本项目中只有一个目标文件,链接的作用是将 hello.obj
和系统组件(专业讲是静态链接库)结合起来,形成可执行文件。如果有多个目标文件,这些目标文件之间还要相互结合。

再次打开项目目录(本教程中是 E:\cDemo\)下的 Debug
文件夹,会看到一个名为cDemo.exe的文件,这就是最终生成的可执行文件,就是我们想要的结果。

双击 cDemo.exe
运行,并没有输出“C语言中文网”几个字,而是会看到一个黑色窗口一闪而过。这是因为,程序输出“C语言中文网”后就运行结束了,窗口会自动关闭,时间非常短暂,所以看不到输出结果,只能看到一个“黑影”。

对上面的代码稍作修改,让程序输出“C语言中文网”后暂停下来:

#include <stdio.h>

#include <stdlib.h>

int main()

{

    puts("C语言中文网");

    system("pause");

    return 0;

}

system("pause");语句的作用就是让程序暂停一下。注意代码开头部分还添加了#include <stdlib.h>语句,否则system("pause");无效。

再次编译并链接,运行生成的 cDemo.exe,终于如愿以偿,看到输出结果了,如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

按下键盘上的任意一个键,程序就会关闭。

更加快捷的办法

我们把上面的步骤总结一下,可以发现一个完整的编程过程是:

  • 编写源文件:这是编程的主要工作,我们要保证代码的语法100%正确,不能有任何差错;
  • 编译:将源文件转换为目标文件;
  • 链接:将目标文件和系统库组合在一起,转换为可执行文件;
  • 运行:可以检验代码的正确性。

不过 VS 提供了一种更加快捷的方式,可以一键完成编译、链接、运行三个动作,点击菜单栏中的“运行”按钮,或者按下F5键就能做到这一点。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

还有更实用的技巧

如果我们的代码中没有添加system("pause");暂停语句,点击“运行”按钮,或者按下F5键后程序依然会一闪而过,只能看到一个“黑影”。

如果想让程序自动暂停,可以按下Ctrl+F5组合键,这样程序就不会一闪而过了;换句话说,按下Ctrl+F5键,VS 会自动在程序的最后添加暂停语句。

现在我们已经了解了从编写代码到生成程序的整个过程,在以后的学习中,可以直接使用Ctrl+F5组合键了,不用再分步骤完成了,这样会更加方便和实用。

4) 总结

现在,你就可以将 cDemo.exe
分享给你的朋友了,告诉他们这是你编写的第一个C语言程序。虽然这个程序非常简单,但是你已经越过了第一道障碍,学会了如何编写代码,如何将代码生成可执行程序,这是一个完整的体验。

在本教程的基础部分,教大家编写的程序都是这样的“黑窗口”,与我们平时使用的软件不同,它们没有漂亮的界面,没有复杂的功能,只能看到一些文字,这就是控制台程序(Console
Application),它与DOS非常相似,早期的计算机程序都是这样的。

控制台程序虽然看起来枯燥无趣,但是它非常简单,适合入门,能够让大家学会编程的基本知识;只有夯实基本功,才能开发出健壮的GUI(Graphical User
Interface,图形用户界面)程序,也就是带界面的程序。

原文地址使用VS2015编写C语言程序

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

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

相关文章

QD1-P8 HTML 格式化标签(font、pre、b、strong、i、u、del、s、sub、sup)

本节学习&#xff1a;HTML 格式化标签。 本节视频 www.bilibili.com/video/BV1n64y1U7oj?p8 ‍ 一、font 标签 用途&#xff1a;定义文本的字体大小、颜色和 face&#xff08;字体类型&#xff09;。 示例 <!DOCTYPE html> <html><head><meta cha…

Tkinter:为什么多个Frame相互覆盖?

在 Tkinter 中&#xff0c;Frame 是一个容器部件&#xff0c;用于组织和管理布局。如果多个 Frame 出现在同一个父容器中并且看起来相互覆盖&#xff0c;通常与布局管理器的使用方式或控件的创建顺序有关。 以下是几个常见的原因和解决方案&#xff0c;帮助你了解为什么多个 F…

生产报工信息化全流程大讲解

在企业的生产管理中&#xff0c;生产报工是一个关键环节&#xff0c;但传统的生产报工方式存在诸多痛点&#xff0c;制约了企业的发展。随着数字化技术的发展&#xff0c;多个平台为企业提供了有效的解决方案。基于生产报工信息化方案报告》白皮书&#xff0c;本文深入探讨生产…

三菱FX3U PLC绝对定位- DRVA指令

指令格式 相关软元件一览 功能和动作 这是采用绝对驱动的单速定位指令。采用从原点(0点)开始的距离指定方式&#xff0c; 也被称为绝对驱动方式。 1、在指令执行过程中&#xff0c;即使改变操作数的内容&#xff0c;也不反映到当前的运行中。 在下次的指令驱动时才有效…

客户服务的未来趋势:智能化与人性化的融合

在当今这个日新月异的数字时代&#xff0c;企业的竞争已不再局限于产品或服务的本身&#xff0c;而是延伸到了客户体验的每一个细微之处。数字化转型作为推动这一变革的重要力量&#xff0c;正深刻改变着客户服务的面貌&#xff0c;使之变得更加智能、便捷且充满人性化。随着人…

最长回文子串-双下标动态规划

题目来源&#xff1a;Leetcode 5.最长回文子串 DP定义&#xff1a; 容易想到&#xff0c;用一个二维数字dp[i][j]来表示s[i:j]是否是回文串&#xff0c;如s“daba”。dp[1][3]1表示"aba"为回文串&#xff1b; 递归条件 想要判断字符串"aba"是否为回文…

MySQL--事务(详解)

目录 一、前言二、本文章目标三、什么是事务&#xff1f;四、事务的ACID特性五、为什么要使用事务六、如何使用事务6.1 查看支持使用事务的引擎6.2语法6.3 开启⼀个事务&#xff0c;执行更新后回滚6.4 开启一个事务更新后提交6.5 保存点6.6 自动/手动提交事务 七、事务的隔离性…

X86、ARM架构镜像

1. 简介 ARM 镜像和 x86 镜像是为不同处理器架构设计的软件镜像。ARM&#xff08;Advanced RISC Machine&#xff09;架构和 x86 架构是两种主流的处理器指令集架构&#xff0c;它们在设计和性能特点上有所不同。以下是 ARM 镜像和 x86 镜像的一些主要区别&#xff1a; 处理器架…

LangGraph入门(一)为什么要用LangGraph

阅读langgraph文档后编写&#xff0c;原文链接 https://langchain-ai.github.io/langgraph/concepts/high_level/ agent介绍 大语音模型LLMs是非常强大的&#xff0c;特别是LLMs与外部API或者检索数据库结合时&#xff0c;将使得的大模型如虎添翼。所以&#xff0c;在调用LLM之…

xss-labs靶场第六关测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、注入点寻找 2、使用hackbar进行payload测试 3、绕过结果 四、源代码分析 五、结论 一、测试环境 1、系统环境 渗透机&#xff1a;本机(127.0.0.1) 靶 机&#xff1a;本机(127.0.0.…

使用通义千问模拟ChatGPT-o1进行思考,并以类似于ChatGPT-o1的形式输出

prompt 你是ChatGPT O1&#xff0c;旨在通过第一性原理思维和基于证据的推理来解决用户问题。你的目标是提供清晰、循序渐进的解决方案、基础概念&#xff0c;并从头开始构建答案。 ### 指导原则&#xff1a; 以下是为大模型采用这种方法而设计的系统提示&#xff1a; 1. 理解…

LeetCode | 69.x的平方根

这道题很适合用二分来解决&#xff0c;算是二门入门的一个练手题吧思想就是首先设置两个指针&#xff0c;一个是0&#xff0c;一个是x&#xff0c;相当于在数轴上划定一个区域 [ 0 , x ]然后计算数轴中间值和我们想要找的值的大小关系&#xff0c;因为数轴是有序的&#xff0c;…

汉诺塔问题递归与非递归实现

汉诺塔问题描述 问题&#xff1a;有三根柱子&#xff08;A、B、C&#xff09;和若干个不同大小的盘子&#xff0c;最初所有盘子都在柱子 A 上&#xff0c;按大小顺序从上到下排列。目标是将所有盘子移动到柱子 C 上&#xff0c;遵循以下规则&#xff1a; 每次只能移动一个盘子…

Leetcode 在排序数组中查找元素的第一个和最后一个位置

这段代码的目的是在一个有序的数组中查找目标元素的第一个和最后一个位置。如果目标元素不存在&#xff0c;返回 [-1, -1]。算法要求时间复杂度为 O(log n)&#xff0c;所以使用了二分查找的思想。 主要思路&#xff1a; 使用两次二分查找&#xff1a; 第一次二分查找用于找到…

《OpenCV计算机视觉》—— 人脸识别

识别图片如下&#xff1a; 完整代码&#xff1a; import cv2image cv2.imread(face.png) gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) """ 加载分类器 """ faceCascade cv2.CascadeClassifier(haarcascade_frontalface_default.xml) &…

UE5 使用Animation Budget Allocator优化角色动画性能

Animation Budget Allocator是UE内置插件&#xff0c;通过锁定动画系统所占CPU的预算&#xff0c;在到达预算计算量时对动画进行限制与优化。 开启Animation Budget Allocator需要让蒙皮Mesh使用特定的组件&#xff0c;并进行一些编辑器设置即可开启。 1.开启Animation Budget…

浏览器指纹原理及技术实现探索

文章目录 [TOC](文章目录) 前言一、什么是浏览器指纹&#xff1f;二、浏览器指纹的作用三、 浏览器指纹如何保证唯一性四、浏览器指纹的隐私问题五、如何应对浏览器指纹&#xff1f;六、目前常用的技术方案七、技术实现探索1、简易方式2、fingerprintjs2方式 八、总结 前言 在…

国家药包材标准数据库在线查询方法<实用篇>

从业于医药相关的包材行业这么多年&#xff0c;对于许多医药行业的生产企业、药品检验机构、药品注册申请人以及医疗机构的朋友而言&#xff0c;查询国家药包材标准是他们日常工作的一部分&#xff0c;相对容易。然而&#xff0c;对于那些刚进入这个行业的新手或者普通大众来说…

【测试】自动化——常用函数

元素的定位 查找元素&#xff1a;find_element(方式&#xff0c;“元素”)&#xff0c;表示查找一个元素&#xff1b; find_element(方式&#xff0c;“元素”)&#xff0c;表示查找多个元素。 ###使用查找多个元素 ChromeInsChromeDriverManager().install() driverwebdriv…

uniapp学习(005-2 详解Part.2)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战&#xff0c;开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第41p-第p51的内容 文章目录 mainifest.json文件配置获取微信小程序appid注册微信小程序微信小程序控制台图形界…