第七章
读取一个字符
char a;
a=getchar();//a=getchar(); 与scanf("%c",&a);的作用完全一样
getchar()读取一个字符,输入后等待用户按“Enter”键结束(带回显)
getche()读取一个字符,输入后立即获取字符,不用按“Enter”键结束(带回显)
getch()读取一个字符,输入后立即获取字符,不用按“Enter”键结束(不带回显)
注 .回显:你在键盘上按下一个键,如果在电脑上同时显示出你按的内容,就是回显。
计算机本质上只能存储0和1,任意整数都可以通过进制转换变成0和1的序列,所以表示字符最简单的方式就是把字符用整数来代替。例如,字符a就用97来表示,此处97即字符a的ASCII码。
区分
'1' 字符1,ASCII码是49。
1 数字1
"1" 字符串
ex:
'\0' 斜杠0,字符串的结束标志,ASCII码为0。
0 数字0
‘0’ 字符0,ASCII码为48.
单个字符的存储 char a;
多个字符的存储(字符的数组形式,叫作字符数组,也叫字符串) char a[10];
a[10]有10个小空间,即a[0]~a[9],虽然有10个小空间,但实际上只能存储9个字符,因为最后一个小空间需要存储字符串的结束标志'\0'。
读取一行字符串
1. scanf(“%s”,a);
注意:scanf进行读入是只有与“%s“配合使用读取一行字符串才无需在变量前加取址符&。
2. gets(a);
用scanf进行字符串读入时,遇见空格会提前终止,但是gets进行读入时不会出现此现象,可以读入一整行。
例:
输入 Tom smith
scanf读入Tom,gets读入Tom smith
输出一行字符串
1. printf(”%s“,a);
2. puts(a);
使用puts进行输出时,会在末尾自动换到下一行,相当于printf("%s\n",a);
给一个字符数组赋初始值,在字符串的两边加上双引号和花括号就可以了。
例:
char a[10]={"hello"};
用strlen()来获取字符串的长度
int b;
b=strlen(a);//a指本段代码前申请的字符数组a
用strlen()函数需添加头文件 #include <string.h>
字典序:原意是表示英文单词在字典中的先后顺序,在计算机的领域中扩展成两个任意字符串的大小关系。
两个字符串的比较可以用函数 strcmp();
strcmp(a,b)就是比较字符串在字典中的顺序。
strcmp(a,b)<0 a在b的前面
strcmp(a,b)>0 a在b的后面
strcmp(a,b)=0 a,b为同一个字符串
存储多行字符,运用二维字符数组。
char a[5][11]; 定义一个5行11列的字符数组,可以理解为,二维字符数组a有5行,每行可以存储长度不超过10的字符串。
排序常用方法”换位法“
例:
if(a<b)
{
t=a;
a=b;
b=t;
}//经过换位后a一定大于b
排序字符时,想把整个字符a[j] 复制给a[i],是不能直接写成a[i]=a[j];须用字符串复制函数 strcpy(),
strcpy(a[i],a[j]);的意思就是将a[j]中的内容替换掉a[i]中的内容。
使用strcpy()函数也需要添加头文件 #include <string.h>
二位字符数组的初始化
char a[2][10]={"hello",
"world"};//写成两行出于美观