C语言有专门为面向字符I/O而设计的一对函数getchar()和putchar()
getchar()函数没有参数,它返回来自设备输入的下一个字符
ch = getchar();
scanf("%c",&ch);
该语句效果与下面的语句效果一样
putchar()打印它的参数
putchar(ch);
printf("%c",ch);
该语句效果与下面的语句效果一样
下面是个简单小例子
#include <stdio.h>
#define SPACE ' ' /*SPACE相当于"引号-空格-引号"*/
int main(void )
{
char ch;
while((ch = getchar()) != '\n') /*当一行未结束时*/
{
if(ch == SPACE) /*空格不变*/
putchar(ch);
else
putchar(ch+1); /*改变字符为下一个字符*/
}
putchar(ch); /*打印换行符*/
return 0;
}
示例结果
call me jackson.
bmm nf kbdltpo/
可以看到字符的字母全替换为下一个,只不过标点.也被替换成斜杠了。
C语言为了解决这个问题,提供了头文件ctype.h,里面的函数能够接受一个字符参数,并判断是否属于某个类型,如果是则返回非零值,不是则返回零。
我们可以使用isalpha()来判断是否为字母
更新的示例与结果
#include <stdio.h>
#include <ctype.h>
int main(void )
{
char ch;
while((ch = getchar()) != '\n') /*当一行未结束时*/
{
if(isalpha(ch)) /*如果是字母*/
putchar(ch+1); /*改变字符为下一个字符*/
else
putchar(ch); /*不是则不变*/
}
putchar(ch); /*打印换行符*/
return 0;
}
call me jackson.
dbmm nf kbdltpo.
ctpye.h的一些常用函数清单如下