【08】C语言数据类型--字符类型
C语言数据类型–字符类型
文章目录
- 1. 基本字符类型:char
- 2. 字符与ASCII码
- 3. 字符运算
- 4. 转义字符
- 5. 字符数组与字符串
- 6. 字符处理函数
在C语言中,字符类型用于存储单个字符,是编程中非常基础且重要的数据类型。
1. 基本字符类型:char
char是C语言中表示字符的基本数据类型:
- 存储大小:通常1字节(8位)
- 取值范围:
- 有符号char:-128 到 127
- 无符号char:0 到 255
- 本质:虽然称为"字符类型",但实际上是小型整数类型
在C语言中,直接创建单个字符必须使用单引号(’ '),而双引号(" ")用于创建字符串(字符数组)。
这是C语言语法中严格区分的规则。
字符类型的选择
- 明确仅存储字符时使用
char - 需要小范围整数时也可使用
char - 需要确保无符号时使用
unsigned char - 处理文本时通常使用
char数组或指针
字符的创建方式
#include <stdio.h>int main(){char c1 = 'A'; //字符常量用单括号括起char c2 = '65'; //直接用ASCII码值创建字符char c3 = '\x41'; //用十六进制创建字符char c4 = '\101'; //用八进制创建字符printf("c1:%c\n",c1);printf("c2:%c\n",c2);printf("c3:%c\n",c3);printf("c4:%c\n",c4);
}
输出结果:
c1:A
c2:5
c3:A
c4:A
2. 字符与ASCII码
C语言使用ASCII编码表示字符:
- 每个字符对应一个整数值(ASCII码)
- 例如:‘A’=65,‘a’=97,‘0’=48
- 大小写字母相差32(‘a’-‘A’=32)
常见ASCII字符范围
- ‘A’-‘Z’:65-90
- ‘a’-‘z’:97-122
- ‘0’-‘9’:48-57
3. 字符运算
字符可以参与整数运算:
#include <stdio.h>
#include <ctype.h>int main() {char c = 'A';printf("c=%c\n",c);c = c + 1; // 将字符'A'(65)加一,变成'B'(66)printf("c=%c\n",c);//大小写转换char M_lower = 'M' + 32; // 'm'char m_upper = 'm' - 32; // 'M'printf("M_lower=%c\n",M_lower);printf("m_upper=%c\n",m_upper);// 数字字符转数值char digit = '7';int value = digit - '0'; // 7printf("value=%d\n",value);return 0;
}
执行效果:
c=A
c=B
M_lower=m
m_upper=M
value=7
4. 转义字符
C语言提供了特殊转义字符表示控制字符:
| 转义序列 | 含义 |
|---|---|
| \n | 换行 |
| \t | 水平制表 |
| \’ | 单引号 |
| \" | 双引号 |
| \\ | 反斜杠 |
| \0 | 空字符(null) |
| \xhh | 十六进制表示 |
| \ooo | 八进制表示 |
5. 字符数组与字符串
字符数组可用于存储字符串(以’\0’结尾):
char str1[] = "Hello"; // 自动添加'\0'
char str2[6] = {'H','e','l','l','o','\0'};
6. 字符处理函数
C标准库提供了一系列字符处理函数(需包含<ctype.h>):
isalpha(ch); // 是否是字母
isdigit(ch); // 是否是数字
isupper(ch); // 是否是大写字母
islower(ch); // 是否是小写字母
toupper(ch); // 转为大写
tolower(ch); // 转为小写
代码示例
#include <stdio.h>
#include <ctype.h>int main() {// 设置控制台为GBK编码(Windows中文默认编码)SetConsoleOutputCP(936); char ch;printf("输入一个字符: \n");scanf("%c", &ch);printf("ASCII码: %d\n", ch);if(isalpha(ch)) {if(isupper(ch)) {printf("这是一个大写字母\n");printf("转换为小写: %c\n", tolower(ch));} else {printf("这是一个小写字母\n");printf("转换为大写: %c\n", toupper(ch));}} else if(isdigit(ch)) {printf("这是一个数字\n");printf("数值为: %d\n", ch - '0');} else {printf("这是其他字符\n");}return 0;
}
以输入字符’C‘为例,执行效果如下:
输入一个字符:
C
ASCII码: 67
这是一个大写字母
转换为小写: c
