
1.2 完整的C语言开发过程

俗话说“自己动手,丰衣足食”,了解C语言的开发环境是学习编程的第一步,熟悉并使用开发环境完成C语言的开发过程是编写程序的第二步。下面我们通过一个实例展示完整的C语言开发过程。
1.2.1 创建项目
下面我们使用Visual Studio 2017创建一个项目,具体步骤如下。
(1)打开Visual Studio 2017,进入欢迎界面,如图1.5所示。

图1.5 Visual Studio 2017的欢迎界面
(2)在编写程序之前,首先需要创建一个新程序文件,具体方法如下:在Visual Studio 2017的欢迎界面选择“文件”→“新建”→“项目”命令,如图1.6所示,或者按快捷键〈Ctrl+Shift+N〉,弹出“新建项目”对话框。

图1.6 创建一个新程序文件
(3)在“新建项目”对话框的左侧选择“Visual C++”→“Windows桌面”选项,即可在右侧列表框中显示可以创建的不同类型的文件夹,选择“Windows桌面向导Visual C++”选项,在下面的“名称”文本框中输入要创建的文件夹名称,如“Dome”,在“位置”文本框中输入文件夹的存储地址,可以通过单击右边的“浏览”按钮修改文件夹的存储地址。创建项目文件夹的操作过程如图1.7所示。

图1.7 创建项目文件夹的操作过程
(4)在设置好文件夹的名称和存储地址后,单击“确定”按钮,打开“Windows桌面项目”对话框,勾选“空项目”复选框,取消勾选“安全开发生命周期(SDL)检查”复选框,然后单击“确定”按钮,如图1.8所示。

图1.8 “Windows桌面项目”对话框
(5)自动跳转到创建项目界面,如图1.9所示。

图1.9 创建项目界面
(6)右击“解决方案资源管理器”中的“Demo”→“引用”→“源文件”选项,在弹出的快捷菜单中选择“添加”→“新建项”命令,如图1.10所示,或者按快捷键〈Ctrl+Shift+A〉,弹出“添加新项”对话框。

图1.10 添加新建项操作
(7)在“添加新项”对话框的左侧选择“Visual C++”选项,即可在右侧列表框中显示可以创建的不同类型的文件。因为要创建C源文件,所以这里选择“C++文件(.cpp)”选项,在下面的“名称”文本框中输入要创建的C源文件的名称,如“dome.c”,在“位置”文本框中设置文件的存储地址,保持默认设置即可,单击“添加”按钮。具体操作如图1.11所示。

图1.11 “添加新项”对话框中的具体操作
学习笔记
因为要创建的是C源文件,所以在“名称”文本框中将默认的扩展名.cpp改为.c。例如,创建名称为“demo”的C源文件,应该在“名称”文本框中输入“demo.c”。
(8)这样就创建了一个C源文件,如图1.12所示。

图1.12 完成创建C源文件
至此,创建项目就完成了。
1.2.2 输入代码
前面我们创建了一个C源文件dome.c,接下来我们在该文件中输入以下代码:

将代码输入demo.c文件中,如图1.13所示。

图1.13 输入代码
学习笔记
在输入代码时,输入格式必须是英文半角格式。我们以搜狗输入法为例,如图1.14所示的输入格式是错误的,如图1.15所示的输入格式是正确的。

图1.14 错误输入格式

图1.15 正确输入格式
1.2.3 编译程序
我们不能保证编写的程序是正确的,而且程序员一般很难发现自己程序中的bug,因此需要对编写的程序进行编译。如果程序有错,编译器就会报错。
编译程序的本质是将编写的代码编译成计算机能认识的机器语言,也就是说,将高级语言翻译成机器语言。人类对高级语言的辨识度高,而计算机对机器语言的辨识度高,为了使人与计算机沟通,编译程序是不可或缺的。编译程序的过程如图1.16所示。

图1.16 编译程序的过程
在Visual Studio 2017中怎样编译程序呢?有以下两种方法。
●在Visual Studio 2017的菜单栏中选择“生成”→“编译”命令,如图1.17所示。

图1.17 编译程序
●按快捷键〈Ctrl+F7〉。
在编译程序后,如果在“输出”窗格输出“生成:成功1个,失败0个,最新0个,跳过0个”,如图1.18所示,则表示编译程序成功。

图1.18 编译程序成功
1.2.4 运行程序
在1.2.3节已经完美地编译了程序,接下来运行程序。
在Visual Studio 2017中,运行程序的方法有以下两种。
●在Visual Studio 2017的菜单栏中选择“调试”→“开始执行(不调试)”命令,如图1.19所示。

图1.19 运行程序
●按快捷键〈Ctrl+F5〉。
程序的运行结果如图1.20所示。

图1.20 程序的运行结果
学习笔记
如果你觉得程序没有错误,则可以直接运行程序。
1.2.5 调试程序
在编译程序后,如果在“输出”窗格输出“生成:成功0个,失败1个,最新0个,跳过0个”,如图1.21所示,则表示编译程序失败。

图1.21 编译程序失败
编译程序失败说明程序中有错误,在error位置双击,error提示就会变成蓝色,在代码中发生错误的位置会有一个,表示此处或附近的代码是错误的,如图1.22所示。

图1.22 错误提示
根据图1.22中可知,这段代码中发生错误的位置在第5行,并且发生错误的代码下面会出现红色的波浪线。仔细观察程序,我们发现,在第4行的printf()函数后面没有加“;”,在第4行的printf()函数后面加上“;”,再次编译,即可编译成功,然后按照1.2.4节的方法运行程序。
这里我们发现一个问题,明明是第4行的printf()函数的语法错误,为什么错误提示在第5行的位置?这是因为在C语言程序中,在每行后面使用“;”表示此句结束,在第4行漏写了“;”,编译器认为第4行和第5行是一句话,所以在第5行提示语法错误。如果在提示错误的位置没有找到错误,那么一般会在上一行找到错误。
学习笔记
这是一个常见的错误,在编写程序时,会遇到各种各样的错误,编译程序能够提示错误的所在位置,大家在编写代码时也应该认真。