C语言入门----字符
2015-10-15 22:32
751 查看
字符变量在内存中占用一个字节,只能存放ASCII码。
‘0’~’9’对应的整数为48~57
‘A’~’Z’对应的整数为65~90
‘a’~’z’对应的整数为97~122
大写字母与小写字母的差值为32
putchar和getchar
字符运算
C语言规定,所有的字符运算都是转成ASCII的整数运算。
如:
‘B’- ‘A’相当于66-65=1
‘a’+ 1相当于97+1=98=’b’
既然字符型数据和整形数据可这么方便的转换,那么字符型数据也可以使用%d输出,用来获得字符的ASCII码序号。
用scanf输入字符
每个%c只接受一个字符
如果输入:uvwxyz
系统会一个一个的截取,使a = ‘u’,b = ‘v’,c = ‘w’
在字符型变量上使用列宽控制时,第一个变量只会读取第一个字符,第二个变量会跳跃列宽后再读取一个字符
如果输入:abcde
则c1 = ‘a’,c2 = ‘d’
空格和回车都作为字符
如果输入:x□y□z
□表示空格,则a = ‘x’,b = ‘□’,c = ‘y’,最右边的两个字符被丢弃。
如果输入:x(回车)yz
a,c与前面相同,但是b会赋值为一个回车,也就是ASCII码的10。
例题
程序运行后,若从键盘输入(从第1列开始)
123(回车)
45678(回车)
则输出结果为:1245
‘0’~’9’对应的整数为48~57
‘A’~’Z’对应的整数为65~90
‘a’~’z’对应的整数为97~122
大写字母与小写字母的差值为32
putchar和getchar
char c; c=getchar();/*从键盘读取一个字符*/ putchar(c);/*输出c的值到屏幕*/
字符运算
C语言规定,所有的字符运算都是转成ASCII的整数运算。
如:
‘B’- ‘A’相当于66-65=1
‘a’+ 1相当于97+1=98=’b’
既然字符型数据和整形数据可这么方便的转换,那么字符型数据也可以使用%d输出,用来获得字符的ASCII码序号。
用scanf输入字符
每个%c只接受一个字符
scanf("%c%c%c",&a,&b,&c);
如果输入:uvwxyz
系统会一个一个的截取,使a = ‘u’,b = ‘v’,c = ‘w’
在字符型变量上使用列宽控制时,第一个变量只会读取第一个字符,第二个变量会跳跃列宽后再读取一个字符
scanf("%3c%c",&c1,&c2);
如果输入:abcde
则c1 = ‘a’,c2 = ‘d’
空格和回车都作为字符
scanf("%c%c%c",&a,&b,&c)
如果输入:x□y□z
□表示空格,则a = ‘x’,b = ‘□’,c = ‘y’,最右边的两个字符被丢弃。
如果输入:x(回车)yz
a,c与前面相同,但是b会赋值为一个回车,也就是ASCII码的10。
例题
#include <stdio.h> int main() { char c1,c2,c3,c4,c5,c6; scanf("%c%c%c%c",&c1,&c2,&c3,&c4); c5=getchar(); c6=getchar(); putchar(c1); putchar(c2); printf("%c%C\n",c5,c6); return 0; }
程序运行后,若从键盘输入(从第1列开始)
123(回车)
45678(回车)
则输出结果为:1245
相关文章推荐
- [c++] LeetCode longest substring without repeating characters问题
- C++中文件的读写
- gen-cpp/.deps/ChildService.Plo: No such file or directory
- C++实现RTMP协议发送H.264编码及AAC编码的音视频,摄像头直播
- c++ primer第五版(中文)习题答案 第十章第五节第一小节-5类迭代器
- C++学习笔记(第二篇)
- 非递归学习树结构(六)--RB-Tree(红黑树)
- c++primer——模板,标准库特殊设施
- C++设计模式——单例模式
- 浅析C++中的重载运算符(重点是重载+=)
- 浅析C++中的重载运算符(重点是重载+=)
- Isomorphic Strings
- 编译器定义的C/C++语言各种基本数据类型的取值范围
- C++编程有趣的标题1 于1~9填写的运算结果的中间符号等于100
- C++库一览
- win7 下mingw64 编译boost 1.59
- C/C++中函数参数传之指针形参
- c语言在一段段落中匹配一个单词出现次数
- c++primer——面向对象编程
- C语言重要知识点总结(一)