我的全栈之路-C语言基础之HelloWorld

我的全栈之路-C语言基础之HelloWorld

我的全栈之路

3.1 Visual Studio 2019实现HelloWorld

  1. 新建解决方案

    在之前创建的Git仓库c-core-programming基础上新建项目

    然后选择项目模板:基于C++的空项目

然后设置项目名称、路径以及解决方案名称

  1. 新建筛选器

    在解决方案资源管理器视图下,选中源文件,然后新建筛选器

新建筛选器

筛选器的名称为Chapter1

Chapter1

  1. 新建项

    新建源文件helloworld.c

  2. 编辑源文件
#include <stdio.h>
#include<stdlib.h>

int main(int argc, char* argv[]) {
    printf("Windows10 1903 & Visual Studio 2019 Hello World \n");
    system("pause");
    return 0;
}
  1. 运行helloworld

    点击本地Windows调试器,可以运行程序,也可以通过快捷键F5启动本地Windows调试器来运行程序

程序运行结果

如果想要关闭程序,可以通过快捷键Shift+F5实现。

如果运行程序时出现如下提示

可以根据提示设置在调试时停止自动关闭控制台

Visual Studio遇到printf()语句自动弹出终端输出Windows10 1903 & Visual Studio 2019 Hello World,遇到return语句关闭终端,打开终端和关闭终端时间很短,感觉程序有闪退现象。

这里可以调用stdlib.h头文件中的system函数并传递字符串参数pause让程序暂停。

  1. 推送代码到远程仓库

    首先切换到团队资源管理器视图下,然后点击更改

    然后填写提交信息,点击全部提交,此时会将代码提交到本地仓库

然后点击同步到远程仓库

推送到远程仓库

然后就可以在GitHub仓库中查看提交的内容

3.2 HelloWorld详解

3.2.1 #include预处理

在C语言中,如果想要调用系统的某个函数,必须首先包含该函数声明所在的头文件,例如hellowrld程序中调用printf()函数声明,就是位于系统目录C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt下的头文件stdio.h。

stdio.h

如果包含的文件在当前目录下,使用#include "头文件",如果该头文件在系统目录下,则使用#include <>。而编译器查找当前目录下的头文件时如果未找到,还会去系统目录下查找对应的头文件。

#include的本质就是将包含的头文件内容全部复制到源文件中去。

如何验证这一点呢?

首先在项目c-core-programming-foundational的头文件下新建筛选器Chapter1,并创建头文件guanglei.h

guanglei.h

然后把之前源文件helloworld.c的源码复制到guanglei.h中

guanglei.h

之后定义源文件guanglei.c

guanglei.c

该源文件的内容只需要使用#include "guanglei.h" 即可运行。

但是Visual Studio 2019 解决方案(例如c-core-programming)下每个项目(c-core-programming-foundational)只能有一个包含main方法的源程序,否则程序运行时会出错。

这里将之前helloworld程序中的main方法改成别的名字(例如helloworld_main)即可。

然后再次运行程序,运行结果和之前的helloworld程序结果一样

#include

#include <stdio.h>表示包含头文件stdio.h,std表示标准库,是可以移植的。也就是helloworld.c可以运行在各个操作系统下。

Windows10 1903 &CLion 2019.2

Ubuntu18.04 & CLion 2019.2

运行之前必须先安装CMake,使用sudo apt install cmake安装即可

Ubuntu18.04 & CLion 2019.2

macOS10.14 &XCode10.3

而stdio表示标准输入输出,printf()函数正是一个输出函数。

stdlib表示标准库,system()函数正是一个标准库函数。

头文件只存放了函数的定义,至于函数的实现,在对应的系统库文件中。

如果想要了解你的C程序依赖了哪些系统库,在Linux(Ubuntu)下可以使用ldd命令查看

3.2.2 main函数

main函数是C程序的入口,一个项目只能有一个main函数,否则程序运行时会提示定义多个main函数。

当程序运行时,系统自动调用main函数,程序从main函数的第一行开始执行,如果其他函数想要得到执行,那么必须被main函数直接或者间接调用

int helloworld_main(int argc, char* argv[]) {
    printf("Windows10 1903 & Visual Studio 2019 Hello World \n");
    system("pause");
    return 0;
}
  • main函数左边的int是函数的返回值,右边()的内容表示函数的参数,外部数据通过函数的参数传递到函数的内部处理。
  • {}表示函数的函数体,也就是函数执行的所有内容都包含在{}中,它是成对出现的。
  • printf函数是系统自带的函数,用于将""包含的字符串按照指定的格式输出到终端,终端可以是控制台、网页或者是文件,目前是输出到控制台。
  • \n表示换行,这里就是输出内容之后换行。
  • 分号(;)表示一条语句结束,C语言每条执行语句都需要以分号(;)结束,如果不加上分号会发生编译错误。
  • system("pause")表示程序暂停,输入任意键后退出,如果在Visual Studio中编写C程序必须加上system("pause"),否则程序运行完成后就直接退出。使用CLion、QT不需要加上system("pause")。
  • return 0表示将int类型的值返回给main函数的调用方(系统)并结束main函数,return语句之后的代码都不会再执行了,0表示正常结束。

在源文件function.c中定义了一个add方法,传递两个整数参数,返回两个整数相加的结果。并且该方法在主函数的prinf方法中被调用,用于输出两个整数相加的结果。

printf函数中的%d表示对应位置的参数按照整数输出。

#include <stdlib.h>

int add(int source,int target) {
    return source + target;
    printf("不可达代码\n");
}

int main(int argc,char* argv[]) {
    int source = 50;
    int target = 100;
    printf("%d加上%d的结果是%d\n",source,target,add(source,target));
    system("pause");
    return 0;
}

程序运行结果表明add方法的return语句之后的输出语句printf("不可达代码\n")并没有执行,如果想要add方法得到执行,在main方法中调用即可,调用时需要传递对应的参数。

3.3.3 注释

注释是用于描述程序的功能,为了便于程序后期的维护,在开发过程中应该添加适量的注释,编译器在预编译时会删除注释,所以注释的内容不会影响程序的结果。

C语言中支持的注释包含单行注释(//)和多行注释(/**/)两种,单行注释顾名思义就是注释一行,多行注释可以注释多行,需要注意的是多行注释不能够嵌套使用,否则会发生编译错误。

增加单行注释和多行注释后的helloworld程序

#include <stdio.h>
#include<stdlib.h>
/*

 我的第一个C程序
 @author liuguanglei [email protected]
 @version 2019/08/20

*/
int main(int argc, char* argv[]) {
    //快捷键F12可以查看函数定义  Ctrl+ -返回
    printf("Windows10 1903 & Visual Studio 2019 Hello World \n");
    system("pause");
    return 0;
}

3.4 Windows常用命令

3.4.1 Windows命令概述

主流的操作系统(Windows,Linux(Ubuntu),MacOS)及大多数应用程序都提供了基于命令行和图形化界面两种交互方式,而移动端是采用手势触控、语音等进行交互。作为普通用户来讲,图形化界面容易上手,而且交互效果更加直观。

但是作为一个程序员来讲,应该去熟悉各个操作系统的命令行的使用,因为命令行相对图形化界面而言,绝大多数场景下使用更加高效。而且图形化界面本质是对命令行的封装,能用图形化界面实现的基本都可以采用命令行实现。而且在服务器端(CentOS,RedHat)基本上是不会安装图形界面。

Windows下想要使用命令,必须首先启动控制台。

Windows系统可以使用快捷键Windows+r调出运行

后输入cmd,便可以进入Windows下的命令行终端

3.4.2 Windows常用命令

在启动Windows的终端(也称为控制台)之后,便可以运行命令了。

如果你使用Windows作为开发平台,如下的命令你也许会经常使用到。

命令名称 功能描述
dir 列出当前目录列表
cd 切换目录(只能在根盘符(例如C盘)内切换)
md 创建目录
del 删除文件
type 显示文本文件内容
echo 输出文本内容 例如echo %path% 查看系统环境变量
ping 检测网络,例如ping baidu.com
notepad 记事本
calc 计算器
mspaint 画图
explore 文件资源管理器
cleanmgr 磁盘清理
desk.cpl 分辨率设置
powercfg.cpl 电源设置
regedit 注册表编辑器
msconfig 系统配置
mstsc 远程连接
firewall.cpl 防火墙
appwiz.cpl 添加或修改程序
tasklist 查看进程列表
taskkill /f /im process-name.exe 关闭指定进程
netstat -ano|indstr "port" 查看端口占用
msinfo 系统信息
sticky notes 便签
ipconfig 查看ip
winver 查看windows版本
cls 清除屏幕内容
exit 退出终端

3.5 system函数的使用

system函数用于C程序中调用各大操作系统的命令和应用程序,被调用的命令和应用程序以字符串的方式作为system函数的参数传入。

实现读取用户输入的命令,并执行该命令

#include <stdio.h>
#include <stdlib.h>

/*
    使用system函数执行用户输入的命令
    @author tony [email protected]
    @version  2019/08/20
*/
int main(int argc,char* argv[]) {

    printf("请输入你要执行的命令\n");
    //定义数组保存用户输入的指令
    char str[100] = { 0 };
    //使用scanf_s函数读取用户输入的指令
    scanf_s("%s", str);
    //执行命令
    system(str);
    return 0;

}

因为system函数位于stdlib.h头文件中,意味着它是一个可以跨平台使用的函数,Visual Studio 2019中可以使用F12快捷键跳转到函数的定义。使用Ctrl+-快捷键实现后退。

但是各大操作系统的命令和应用程序是不相同的,例如在Windows上使用system函数传递字符串参数"notepad"时可以打开记事本,而移植到了类Unix上则无法调用记事本。

原文地址:https://www.cnblogs.com/ittimeline/p/11404225.html

时间: 2024-08-26 20:57:36

我的全栈之路-C语言基础之HelloWorld的相关文章

我的全栈之路-C语言基础之集成开发环境搭建

我的全栈之路-C语言基础之集成开发环境搭建 我的全栈之路 2.1 C语言集成开发环境搭建 目前主流的操作系统(Windows,Linux,macOS)都有完善的C语言集成开发环境,用于编辑.编译.调试.打包部署C程序. 操作系统 开发工具 Windows10 1903 Visual Studio2019 macOS10.14 XCode10.3 Ubuntu18.04 QT5.13 Windows作为世界上最流行的桌面操作系统,当前最新版本为Windows10 1903,VisualStudio

我的全栈之路-C语言基础之C程序运行流程

我的全栈之路-C语言基础之C程序运行流程 我的全栈之路 4.1 C程序的运行流程 C语言编写的程序一般都要经过编写源文件->预处理->编译->汇编->链接后运行这几个流程. 预处理 预处理主要是宏替换.包含头文件.条件编译以及删除注释等操作,预编译阶段生成文件的后缀名通常是.i. 编译 编译主要是将预处理好的文件生成汇编文件,编译后文件的后缀名通常是.s. 汇编 汇编主要是将汇编文件生成二进制文件,汇编后的文件的后缀名通常是.o. 链接 链接主要是将各个二进制文件.库函数.启动代码

我的全栈之路-C语言基础之Visual Studio 2019使用技巧

我的全栈之路-C语言基础之Visual Studio 2019使用技巧 我的全栈之路 5.1 Visual Studio 2019调试程序 在后期编写程序时,经验不足的开发人员通常会遇到两种错误:编译错误和运行时错误,编译错误通常是编写的程序不满足编译器的语法规范,而运行时错误则是程序运行时发生的错误,想要排查程序运行时的错误,就需要使用IDE提供的调试功能. 在源文件debug.c中定义一个返回两个整数相乘的方法mul,然后在main函数中定义两个变量,并调用两个整数相乘的方法,输出计算结果

我的全栈之路-Go语言基础之Go语言开发环境搭建

我的全栈之路-Go语言基础之Go语言开发环境搭建 我的全栈之路 2.1 Go语言编译器下载 在开发Go语言的程序之前,首先去官网 golang.google.cn下载Go语言的编译器,编译器的作用就是将开发人员使用Go语言针对Go编译器编写的Go程序编译成对应平台的机器指令.因为计算机无法识别开发人员编写的程序,需要借助Go编译器来将源程序编译成计算机识别的二进制机器指令. golang官网提供了Windows,Linux,macOS版本的Go语言编译下载 当点击Download Go后,会跳转

3Python全栈之路系列之D

Python全栈之路系列之Django模板 模板是一个文本,用于分离文档的表现形式和内容,模板定义了占位符以及各种用于规范文档该如何显示的各部分基本逻辑(模板标签).模板通常用于产生HTML,但是Django的模板也能产生任何基于文本格式的文档. 如何使用模板系统 在Python代码中使用Django模板的最基本方式如下: 可以用原始的模板代码字符串创建一个Template对象,Django同样支持用指定模板文件路径的方式来创建Template对象; 调用模板对象的render方法,并且传入一套

1Python全栈之路系列之MySQL数据库基本操作

Python全栈之路系列之MySQL数据库基本操作 MySQL数据库介绍 MySQL是一种快速易用的关系型数据库管理系统(RDBMS),很多企业都在使用它来构建自己的数据库. MySQL由一家瑞典公司MySQL AB开发.运营并予以支持.它之所以非常流行,原因在于具备以下这些优点: 基于开源许可发布,无需付费即可使用. 自身的功能非常强大,足以匹敌绝大多数功能强大但却价格昂贵的数据库软件. 使用业内所熟悉的标准SQL数据库语言. 可运行于多个操作系统,支持多种语言,包括 PHP.PERL.C.C

1Python全栈之路系列之Tornado Web框架

Python全栈之路系列之Tornado Web框架 Tornado是一个Python web框架和异步网络库,起初由FriendFeed开发. 通过使用非阻塞网络I/O,Tornado可以支撑上万级的连接,处理长连接, WebSockets,和其他需要与每个用户保持长久连接的应用. Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快.得利于其 非阻塞的方式和对 epoll 的运用,Tornado 每秒可以处理数

1Python全栈之路系列之面向基础

Python全栈之路系列之面向对象基础 面向对象基本介绍 Python编程方式: 面向过程编程 面向函数编程 面向对象编程 名称定义: 如果函数没有在类中称之为函数 如果函数在类中称之为方法 创建类 # 创建一个类,类名是Class_basis class Class_basis:     # 在类里面创建了一个方法ret,类里面的方法必须加一个self关键字     def ret(self):         # 当调用方法的时候输出ret         print("ret")

1Python全栈之路系列Web框架介绍

Python全栈之路系列之Web框架介绍 所有的语言Web框架本质其实就是起一个socket服务端,监听一个端口,然后运行起来 Web框架包含两部分,一部分是socket,另外一部分是业务的逻辑处理,根据请求的不同做不同的处理 Python的Web框架分成了两类, 即包含socket也包含业务逻辑处理的(tornado) 不包含socket(框架本身通过第三方模块实现socket)只包含业务逻辑处理(django,Flask) WSGI的全称是Web Server Gateway Interfa