在字符串之前先回顾一下字符变量char:
char类型用于存储字母、标点符号等字符,但char本身存储的是整数,每一个整数都表示一个特定的字符,用整数表示字符的常见解析方式为ASCⅡ码,0~127中共128个整数各表示一个字符。
#include<stdio.h>
int main()
{
char gg; //定义字符变量
gg='z'; //初始化,亦可用0~128内的整数取代
printf("%c",gg); //打印字符
return 0;
}
{
char gg; //定义字符变量
gg=getchar(); //键盘输入字符
putchar(gg); //打印字符(不管输入多少都只打印起点地址位)
return 0;
}
字符串
字符串是一个或多个字符的序列,初始化如下
int main()
{
char gg[10]={'n','a','i','v','e'};
int i;
printf("%s",gg); 打印字符串
return 0;
}
{
char gg[10]={'n','a','i','v','e'};
int i;
for(i=0;i<10;i++)
printf("%c",gg[i]);
}
与字符的区别在于字符是基本类型(char),而字符串是派生类型(char 数组),由两个字符组成:字符和结束字符\0。
获取字符命令
单个字符的获取:
getchar()
int main()
{
char gg; //定义字符变量
gg=getchar(); //获取字符
putchar(gg); //打印字符
return 0;
}
获取的字符如下 :
getch()
char gg; //定义字符变量
gg=getch(); //获取字符
putchar(gg); //打印字符
获取的字符如下 :
getche()
#include<stdio.h>
int main()
{
char gg; //定义字符变量
gg=getche(); //获取字符
putchar(gg); //打印字符
return 0;
}
获取的字符如下 :
三个获取指令的区别:
getchar在获取字符后需要换行来完成程序,程序中会显示获取的内容和打印的内容,显示打印内容称为回显。
getch获取字符后自动完成打印命令并打印内容,但不回显
getche 获取字符后自动完成打印命令并打印内容,但回显
获取字符串
gets()
除去scanf("%s")以外,还有更加简便的指令来输入字符,即gets()。
同比scanf,除了更加简便以外,gets还有即使是空格也可以继续输入,不必再开新的指令的优势。
#include<stdio.h>
int main()
{
char gg[100]; //定义字符变量
gets(gg); //获取字符串
puts(gg); //打印字符串
return 0;
}
打印字符串:
同scanf一样,gets()也需要回车来完成输入 。
如果输入字符串内容大于程序定义的缓冲区长度,可能造成程序奔溃。
fgets()
#include<stdio.h>
int main()
{
char gg[10]; //定义字符变量
fgets(gg,10,stdin); //获取字符
puts(gg); //打印字符
return 0;
}
代码中fgets给了10-1个元素容量,打印时只显示9个字符(包括空格)。
字符串的判断
在涉及字符串内容判断的指令前需要先输入字符处理函数数据库<stype.h>
#include<stdio.h>
#include<stype.h>
C有一套专门用于处理字符的函数,stype.h包含了这些函数的原型。这些函数将字符作为参数,若其属于某个特定类别,就返回一个非零值,且若类别不同,其返回的值也有所差别。
isalnum
int sialnum(int ch);
变元为字母或数字时,函数返回非0值,否则返回0。
isalpha
int isalpha(int ch);
当变元为字母表中的字母时,函数返回非0值,否则返回0。各种语言的字母表互不相同,对于英语来说,字母表由大写和小写的字母A到Z组成。
iscntrl
int iscntrl(int ch);
当变元是控制字符时,函数返回非0,否则返回0。
isdigit
int isdigit(int ch);
当变元是十进制数字时,函数返回非0值,否则返回0。
isgraph
int isgraph(int ch);
如果变元为除空格之外的任何可打印字符,则函数返回非0值,否则返回0。
islower
int islower(int ch);
如果变元是小写字母,函数返回非0值,否则返回0。
isprint
int isprint(int ch);
如果变元是可打印字符(含空格),则函数返回非0值,否则返回0。
ispunct
int ispunct(int ch);
如果变元是除空格、字母和数字外的可打印字符,则函数返回非0,否则返回0。
isspace
int isspace(int ch);
当变元为空白字符(包括空格、换页符、换行符、回车符、水平制表符和垂直制表符)时,函数返回非0,否则返回0。
isupper
int isupper(int ch);
如果变元为大写字母,函数返回非0,否则返回0。
isxdigit
int isxdigit(int ch);
当变元为十六进制数字时,函数返回非0,否则返回0。