字符串
字符串的存储
除了要存储双引号中的字符之外,C 规定还要多存储一个字符 “\0” 作为字符串的结束标志
例:存储一个值为 “learn” 的字符串
这个字符串的长度是 5
但是他需要 6
个字节来存储,因为要在这个字符串的结尾多存储一个结束表示 “\0”
字符型数据
字符用单引号<’’>表示
字符串用双引号<””>表示
转义字符
以转义符(反斜杠<\>) 开头的特定字符叫做转义字符
常见的转义字符有:
转义字符 | 含义 |
---|---|
\n | 换行 |
\r | 回车 |
\b | 退格 |
\t | 跳格 |
\ | 字符<\> |
\’ | 字符<’> |
\” | 字符<”> |
\ddd | 1 ~ 3 位 8 进制表示的字符(ASCII 码??) |
\xhh | 1 ~ 2 位 16 进制表示的字符 |
换行和回车的区别
换行:换到下一行
回车:回到开头
跳格:跳一个制表位(一般在计算机软件中一个制表位是 4 个字符,但在 C 语言中一个制表位是 8 个字符!)
1 | void main(void){ |
输出结果:\
输入 & 输出
scanf() 和 printf() 函数
int scanf(const char *format, …) 函数从标准输入流 stdin 读取输入,并根据提供的 format 来浏览输入
int printf(const char *format, …) 函数把输出写入到标准输出流 stdout , 并根据提供的格式产生输出
format 可以是一个简单的常量字符串,但是您可以分别指定 %s、%d、%c、%f 等转换符来输出或读取字符串、整数、字符或浮点数。还有许多其他可用的格式选项,可以根据需要使用。如需了解完整的细节,可以查看这些函数的参考手册
转换符 | 说明 |
---|---|
%c | 单个字符 |
%s | 字符串 |
%u | 无符号十进制整数 |
%d | 有符号十进制整数(正数不输出符号) |
%i | 有符号十进制整数(与 %d 相同) |
%o | 八进制形式无符号整数(不输出前缀 0) |
%x(%X) | 十六进制形式无符号整数(不输出前缀 Ox) |
%a(%A) | 十六进制形式浮点数 (C99 新增) |
%f | 以小数形式输出单、双精度实数 |
%e(%E) | 以指数形式输出单、双精度实数 |
%g(%G) | 以%f 或%e 中较短的输出宽度输出单、双精度实数 |
%lu | 32 位无符号整数 |
%llu | 64 位无符号整数 |
%p | 指针地址 |
%% | “%” |
示例:
1 | // 输入 |
getchar() & putchar() 函数
int getchar(void) 函数从屏幕读取下一个可用的字符,并把它返回为一个整数。这个函数在同一个时间内只会读取一个单一的字符。您可以在循环内使用这个方法,以便从屏幕上读取多个字符
int putchar(int c) 函数把字符输出到屏幕上,并返回相同的字符。这个函数在同一个时间内只会输出一个单一的字符。您可以在循环内使用这个方法,以便在屏幕上输出多个字符
示例:
1 | int c; |
gets() & puts() 函数
char *gets(char *s) 函数从 stdin 读取一行到 s 所指向的缓冲区,直到一个终止符或 EOF
int puts(const char *s) 函数把字符串 s 和一个尾随的换行符写入到 stdout
示例:
1 | char str[100]; |
strcmp() 函数
比较两个字符串,即对两个字符串从左向右逐个字符按 ASCII 码值相比较,直到出现不同字符或者遇到结束符 “\0” 为止
参数 1 = 参数 2 函数值为 0
参数 1 > 参数 2 函数值为 1
参数 1 < 参数 2 函数值为 -1
例:
1 | void main(){ |
strcat() 函数
C 库函数 char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾
示例:
1 | void main(){ |
strlen() 函数
获取字符串的实际长度,不包含结束符 “\0”
1 | void main(){ |
strupr() & strlwr() 大小写转换
1 | void main(){ |