本文共 2946 字,大约阅读时间需要 9 分钟。
字符常量是用单引号括起来的一个字符,例如 'a', '#', '%', 'D'。C语言中的字符常量表示一个ASCII码值,范围为0到255(对于unsigned char)或-128到127(对于signed char)。
可以通过减法和加法将字符常量转换为数字。例如:
int main() { char c1, c2; int i = 100; c1 = 'a'; // 'a' 的ASCII码为97 i = i - c1; // i = 3 printf("c1: %c\n", c1); // 输出 'a' printf("c1: %d, i: %d\n", c1, i); // 输出97和3 c2 = c1 + 4; // 'a' + 4 = 'e' printf("c2: %c\n", c2); // 输出 'e'} 运行结果:
c1: ac1: 97, i: 3c2: e
ASCII码共有256个值,常见字符的ASCII码值如下:
| 转义字符 | 意义 | ASCII码值(十进制) |
|---|---|---|
\a | 响铃 (BEL) | 7 |
\b | 退格 (BS) | 8 |
\f | 换页 (FF) | 12 |
\n | 换行 (LF) | 10 |
\r | 回车 (CR) | 13 |
\t | 水平制表 (HT) | 9 |
\v | 垂直制表 (VT) | 11 |
\0 | 空字符 (NULL) | 0 |
\xhh | 1-2位十六进制数 | 两位十六进制 |
\ddd | 1-3位八进制数 | 三位八进制 |
scanf() 和 printf() 函数scanf() 和 print() 用于读取和输出字符。例如:
int main() { int x, y, z; char ch; scanf_s("%d%c%d", &x, &ch, 2, &y); // 读取三个输入 z = x + y; printf("%d%c%d=%d\n", y, ch, x, z);} 运行结果:
1+22+1=3
getchar() 和 putchar()getchar() 读取输入字符,putchar() 写入字符流。例如:
int main() { char c; c = getchar(); // 读取大写字母 putchar(c + 32); // 显示小写字母 putchar('\n');} 运行结果:
Aa
使用 getchar() 读取输入数据时,缓冲区可能包含未显示的字符。例如:
int main() { char c1, c2; c1 = getchar(); // 读取第一个字符 c2 = getchar(); // 读取第二个字符 printf("%c %c\n", c1, c2); // 输出两个字符 printf("%d %d\n", c1, c2); // 输出两个字符的ASCII码 return 0;} 输入结果:
输入abc <回车> abca b97 98输入a <回车> aa97 10 <回车>回车> 回车> 回车>
\ 开头的字符序列——转义字符常量许多控制字符不能用普通字符表示,必须使用转义字符。常见转义字符及其意义如下:
| 转义字符 | 意义 | ASCII码值(十进制) |
|---|---|---|
\a | 响铃 (BEL) | 7 |
\b | 退格 (BS) | 8 |
\f | 换页 (FF) | 12 |
\n | 换行 (LF) | 10 |
\r | 回车 (CR) | 13 |
\t | 水平制表 (HT) | 9 |
\v | 垂直制表 (VT) | 11 |
\0 | 空字符 (NULL) | 0 |
\xhh | 1-2位十六进制数 | 两位十六进制 |
\ddd | 1-3位八进制数 | 三位八进制 |
int main() { printf("%.4f%.4f%.4f\n", 1.01, 2.2334, 3.4); printf("%.4f\t%.4f\t%.4f\n", 1.01, 2.2334, 3.4);} 运行结果:
1.01002.23343.40001.0100 2.2334 3.4000
int main() { printf("This\nis\na\n\t\ttest\n\nShe said, \"How are you?\"\n");} 运行结果:
Thisisa testShe said, "How are you?"
| 项目 | ASCII编码 | 汉字编码 |
|---|---|---|
| 字符长度 | 1字节 | 2字节 |
| 编码方式 | 和西文混用,最高位为0 | 每字节最高位均为1 |
| 字符范围 | 0-255 | 0-255 |
"abc", "hello", "a+b", "He Lijian"。\0。int main() { char s[] = "abc\n"; // 占5字节:'a', 'b', 'c', '\n', '\0' char s[] = "abc\\n"; // 占5字节:'a', 'b', 'c', '\\', 'n', '\0'} int main() { char ch; printf("输入一个小写字母: "); scanf_s("%c", &ch, 1); ch = ch - 32; printf("与对应的大写字母: %c\n", ch); printf("大写字母 ASCII码: %d\n", ch);} 运行结果:
输入一个小写字母: a与对应的大写字母: A大写字母 ASCII码: 65
\t 对齐输出项int main() { printf("Name\tAge\tSalary\taddr\n"); printf("Tom\t%d\t%6.1f\t%s\n", 20, 314.2, "NewYork"); printf("Jerry\t%d\t%6.1f\t%s\n", 22, 7876.4, "BingJing"); printf("Blotu\t%d\t%6.1f\t%s\n", 9, 5.5, "ShangHai"); return 0;} 运行结果:
Name Age Salary addrTom 20 314.2 NewYorkJerry 22 7876.4 BingJingBlotu 9 5.5 ShangHai
转载地址:http://cjqm.baihongyu.com/