本文共 3208 字,大约阅读时间需要 10 分钟。
一.字符常量
用单引号括起来的一个字符,如’a’,’#’,’%’,‘D’#includeint main(){ char c1, c2; c1 = 'a'; c2 = 'b'; printf("%c %c", c1, c2);}
二.字符当数字用
#includeint main(){ char c1, c2; int i = 100; c1 = 'a'; i = i - c1; printf("c1:%c\n", c1); printf("c1:%d,i:%d\n", c1, i); c2 = c1 + 4; printf("c2:%c\n", c2);}运行结果:c1:ac1:97,i:3c2:e
三.ASCII码对照表
类型 | 字节 | 范围 |
---|---|---|
[signed] char | 1 | -128~127 |
unsigned char | 1 | 0~255 |
四.字符数据的输入输出
①scanf()/sanf_s() 和 printf()
#includeint 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
scanf_s函数输入字符型时,要写长度参数
②getchar()和putchar()
#includeint main(){ char c; c = getchar(); //输入大写字母 putchar(c + 32); //显示小写字母 putchar('\n');}运行结果:Aa
五.获得缓存区中的输入数据
#includeint main(){ char c1, c2; c1 = getchar(); c2 = getchar(); printf("%c %c\n", c1, c2); printf("%d %d\n", c1, c2); return 0;}输入不同,显示不同结果:输入abc <回车> abca b97 98输入a <回车> aa97 10 回车> 回车>
未显示字符c存入缓冲区
六.以\开头的字符序列----转义字符常量
例如: '\n’是一个字符,代表"换行"符
诸多“控制字符”在程序中无法用一般形式的字符表示,要采用转义字符所有的转义字符和所对应的意义
转义字符 | 意义 | ASCII码值(十进制) |
---|---|---|
\a | 响铃(BEL) | 7 |
\b | 退格(BS),将当前位置移到前一列 | 8 |
\f | 换页 (FF),j将当前位置移到下页开头 | 12 |
\n | 换行(LF),将当前位置移到下一行开头 | 10 |
\r | 回车(CR),将当前位置移到本行开头 | 13 |
\t | 水平制表(HT),跳到下一个TAB位置 | 9 |
\v | 垂直制表(VT) | 11 |
\ | 代表一个反斜线字符’’ | 92 |
’ | 代表一个单引号字符 | 39 |
" | 代表一个双引号字符 | 34 |
\0 | 空字符(NULL) | 0 |
\ddd | 1到3位八进制数所代表的任意字符 | 三位八进制 |
\xhh | 1到2位十六进制数所代表的任意字符 | 二位16进制 |
七.转义字符用法示例
#includeint 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
#includeint main(){ printf("This\nis\na\n\t\ttest\n\nShe said, \"How are you?\"\n");}运行结果:Thisisa testShe said, "How are you?"
#includeint main(){ printf("笑脸:\001\n"); printf("红黑桃:\003\t\006\n"); printf("听个响:\a\n"); \\ \007 \7效果相同 printf("换几行:a\012 b\n c\x0A d\n"); printf("看字母:AB\n"); printf("再看字母:\101\102\n"); printf("再看字母:\101\b\102\n"); printf("还看字母:\101\r\102\n");}运行结果:笑脸: /缺少字体显示方框红黑桃: /缺少字体显示方框听个响: /been响铃一声换几行:a b c d看字母:AB再看字母:AB再看字母:BB看字母:A
八.ASCII编码与汉字编码的区别
ASCII编码:①标准只需要7位 ②实际占用1字节 ③最高位为0
"汉字"编码:①每个汉字2字 ②为和西文混合使用,每字节最高位均为1
九.字符串常量及存储
1.用双引号括起来的部分就是字符串常量 如:“abc”,“hello”,“a+b”,“He Lijian” 2.字符串常量"abc"在内存中占4个字节,而不是3字节a | b | c | \0 |
---|
3.编译系统会自动加一个’\0’作为字符串结束标志
4.’\0’不是字符串的一部分,它只作为字符串的结束标志.如printf(“abc”);输出3个字符abc,不包’\0’; 5.“丁进"占5个字节 6.空字符串” "占1个字节 7.辨析: ① "a"和’a’的区别 char c; c=‘a’; //正确 c=“a”; //错误 ‘a’,“a”; //正确 ‘aa’,“aa”; //有错误 ②字符串常量"abc\n"包含4个字符,占5个字节a | b | c | \n | \0 |
---|
③分析"abc\\n"与"abc\\\n"的存储方式
a | b | c | \ | n | \0 |
---|
a | b | c | \ | \n | \0 |
---|
实践项目
1.输入一个小写字母,输出对应的大写字母和ASCII码#includeint 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
2.利用\t对齐输出项
#includeint 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/