getchar()与 putchar()
getchar ()函数不带任何参数,它从输入队列中返回下一个字符。例如,下 面的语句读取下一个字符输入,并把该字符的值赋给变量ch:
ch = getchar();
该语句与下面的语句效果相同:
scanf ("%c",&ch) ;
putchar ()函数打印它的参数。例如,下面的语句把之前赋给ch的值作为字符打印出来:
putchar (ch) ;
该语句与下面的语句效果相同:
该语句与下面的语句效果相同:
printf ("%c",ch) ;
由于这些函数只处理字符,所以它们比更通用的scanf ()和printf()函数更快、更简洁。而且,注意getchar ()和putchar ()不需要转换说明,因为它们只处理字符。这两个函数通常定义在stdio.h。
getchar与scanf
getchar() 读取每个字符,包括空格、制表符和换行符:而scanf ()在读取数字时则会跳过空格、制表符和换行符。
ctype.h系列的字符函数
常用函数:
isalpah(char ch); //判断ch是否为字母,是的话返回1,不是返回0
字符映射函数不会修改ch的值。
**注意:**使用之前需要在开始包含ctype.h头文件。
下表列出了常见的字符测试函数:
下表列出了常见的字符映射函数:
小记(逻辑运算符)
优先级
!运算符的优先级很高,比乘法运算符还高,与递增运算符的优先级相同,只比圆括号的优先级低。&&运算符的优先级比| |运算符高,但是两者的优先级都比关系运算符低,比赋值运算符高。因此,表达式a >b&&b>c11b>d相当于((a>b)G&(b>c))11(b>d)。、
求值顺序
C保证逻辑表达式的求值顺序是从左往右。&&和| |运算符都是序列点,所以程序在从一个运算对象执行到下一个运算对象之前,所有的副作用都会生效。而且,C保证一旦发现某个元素让整个表达式无效,便立即停止求值。正是由于有这些规定,才能写出这样结构的代码:
while ((c = getchar()) != ’ ’ && c != ‘\n’)
如上代码所示,读取字符直至遇到第1个空格或换行符。第1个子表达式把读取的值赋给c,后面的子表达式会用到c的值。如果没有求值循序的保证,编译器可能在给c赋值之前先对后面的表达式求值。