C语言复习笔记 2

    xiaoxiao2021-03-25  29

    2 C语言初探

    2.1 屏幕上显示内容

    从计算机获取信息的两种方式:屏幕显示文字、图像、视频等;喇叭发出的声音。

    输入、输出、基本程序框架、字符、字符串、函数 puts("hello");

    2.2 基本概念

    C语言自带的函数称为库函数(Library Function)。库(Library)是编程中的一个基本概念,可以简单地认为它是一些列函数的集合,在磁盘上往往是一个文件夹。C语言自带的库称为标准库(Standard Library),其他公司或个人开发的库称为第三方库(Third-Party Library)。

    除了库函数,我们还可以编写自己的函数,拓展程序的功能。自己编写的函数称为自定义函数。自定义函数和库函数在编写和使用方式上完全相同,只是由不同的机构来编写。

    C语言开发者们编写了很多常用函数,并分门别类的放在了不同的文件,这些文件就称为头文件(header file)。每个头文件中都包含了若干个功能类似的函数,调用某个函数时,要引入对应的头文件,否则编译器找不到函数。 实际上,头文件往往只包含函数的说明,也就是告诉我们函数怎么用,而函数本身保存在其他文件中,在链接时才会找到。对于初学者,可以暂时理解为头文件中包含了若干函数。

    较早的C语言标准库包含了15个头文件,stdio.h 和 stdlib.h 是最常用的两个:

    stdio 是 standard input output 的缩写,stdio.h 被称为“标准输入输出文件”,包含的函数大都和输入输出有关,puts() 就是其中之一。stdlib 是 standard library 的缩写,stdlib.h 被称为“标准库文件”,包含的函数比较杂乱,多是一些通用工具型函数,system() 就是其中之一。

    2.3 C语言转义字符

    通过puts可以输出字符串,例如:puts("123abc"); “123abc” 对应的ASCII码值的八进制分别是 61、62、63、141、142、143,上面的代码也可以写为: puts("\61\62\63\141\142\143"); 在C语言中,所有的ASCII码都可以用反斜杠\加数字(默认是8进制)来表示,称为转义字符(Escape Character),因为\后面的字符都不是它原来的ASCII字符的意思了。

    除了八进制,也可以用十六进制来表示。用十六进制表示时数字要以x开头。”123abc” 对应的ASCII码值的十六进制分别是 31、32、33、61、62、63,所以也可以写为: puts("\x31\x32\x33\x61\x62\x63"); 注意:只能使用八进制或十六进制,不能使用十进制。 因为C语言的只有八进制和十六进制数字转义符,没有 10 进制数字转义符!!· 形为’\ddd’的三位是八进制转义字符;形为 ’\xdd’的两位十六进制转义字符。

    一个完整的例子: #include <stdio.h> int main(){ puts("The string is: \61\62\63\x61\x62\x63"); return 0; } 运行结果: The string is: 123abc

    在ASCII码中,从 0~31(十进制)的字符为控制字符,它们都是看不见的字符,不能在显示器上显示,也没法书写,只能以转义字符的形式来表示。不过,直接使用ASCII码值记忆不方便,针对常用的控制字符,C语言又定义了简写方式,完整的列表如下:

    转义字符意义ASCII码值(十进制)\a响铃(BEL)007\b退格(BS),将当前位置移到前一列008\f换页(FF),将当前位置移到下页开头012\n换行(LF),将当前位置移到下一行开头010\r回车(CR),将当前位置移到本行开头013\t水平制表(HT),跳到下一个TAB位置009\v垂直制表(VT)011 \\转义字符示例: #include <stdio.h> int main(){ puts("C\tC++\tJava\nC first appeared!\a"); return 0; } 运行结果: C C++ Java C first appeared! 同时会听到喇叭发出“嘟”的声音,这是使用\a的效果。

    【拓展】如何在字符串中输出”和\

    “和\在字符串中都有特殊含义:”表示字符串的开始和结束,\表示转义字符的开始。它们都不能直接出现在字符串中,必须要经过转义,也就是在前面加\,如\”、\。

    \\例如,输出字符串abc\61"xyz的代码: #include <stdio.h> int main(){ puts("abc\\61\"xyz"); return 0; } 运行结果: abc\61"xyz

    如果\不经过转义,写作puts(“abc\61\”xyz”);,那么会输出abc1”xyz,\61被当做转义字符处理。

    如果”不经过转义,写作puts(“abc\61”xyz”);,就会出现错误,编译器会把”abc\61”作为一个字符串,而xyz”不知道是什么,也不应该出现在这里,所以报错。

    总结:字符串中出现\、”时必须要转义。

    2.4 彩色版C语言

    C语言不总是“黑底白字”,它也可以是彩色的,可以调用Windows.h头文件下的SetConsoleTextAttribute函数改变文字和背景颜色。

    调用形式为:

    SetConsoleTextAttribute( HANDLE hConsoleOutput, WORD wAttributes ); hConsoleOutput表示控制台缓冲区句柄,可以通过GetStdHandle(STD_OUTPUT_HANDLE)来获得;wAttributes表示文字颜色和背景颜色。

    这里不去追究HANDLE的含义,后续在Windows开发中会详细讲解。 WORD在windows.h中定义,等同于unsigned short,使用低4位表示文字(前景)颜色,高4位表示文字背景颜色,所以它的取值为xx。x为一位16进制数,即0~F都可以使用,可以随意组合。 0~F 分别代表的颜色如下: 0 = 黑色 8 = 灰色 1 = 淡蓝 9 = 蓝色 2 = 淡绿 A = 绿色 3 = 湖蓝 B = 淡浅绿 C = 红色 4 = 淡红 5 = 紫色 D = 淡紫 6 = 黄色 E = 淡黄 7 = 白色 F = 亮白

    //例如,将背景设置为淡绿色,文字设置为红色: #include <stdio.h> #include <windows.h> int main(){ HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hConsole, 0x2C ); puts("Hello World"); return 0; }

    如果只希望设置文字颜色,背景保持黑色,那么也可以只给出一位16进制数,例如: SetConsoleTextAttribute(hConsole, 0xC ); //将文字颜色设置为红色 SetConsoleTextAttribute(hConsole, 0xF ); //将文字颜色设置为白色

    #include <stdio.h> #include <windows.h> int main(){ HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hConsole, 0xC ); puts("红色文字"); SetConsoleTextAttribute(hConsole, 0xF ); puts("白色文字"); SetConsoleTextAttribute(hConsole, 2 ); puts("淡绿色文字"); return 0; }

    2.5 全栈C/C++工程师(小理想)

    转载请注明原文地址: https://ju.6miu.com/read-200038.html

    最新回复(0)