在学习c语言阶段存在着许多要求输入数值的例子,在输入字符时,如果使用scanf()和printf()根据%c转换说明读写字符,接下来介绍一堆字符输入/输出函数:getchar()和putchar()。
getchar介绍
- int getchar ( void );
- 从流中获取字符
- 返回标准输入的下一个字符
- 它等效于使用 stdin 作为参数调用 getc。
getchar()函数不带有任何参数,它从输入队列中返回下一个字符。
ch = getchar();
这条语句读取下一个字符输入,并把该字符的值赋给变量ch。
scanf("%c", &ch);
该语句与上面的语句效果相同。
putchar介绍
- int putchar ( int character );
- 将字符写入stdout
- 将一个字符写入标准输出
- 它等效于使用 stdout 作为参数调用 putc
putchar()函数打印它的参数。
putchar(ch);
此语句把之前赋给ch的值作为字符打印出来。
printf("%c", ch);
该语句与上面的语句效果相同。
总结
- 由于getchar()与putchar()俩个函数只处理字符,所有较scanf()与printf()函数更快,更加简洁。
- 同时getchar()与putchar()不需要转换说明,因为它们只处理字符。
- 这俩个函数通常定义在stdio.h头文件中,它们通常是预处理宏,而不是真正的函数。
#include<stdio.h>
int main()
{
char ch;
ch = getchar();
while (ch != '\n')
{
if (ch == ' ')
{
putchar(ch);
}
else
{
putchar(ch + 1);
}
ch = getchar();
}
return 0;
}
观察这段代码,与scanf()进行比较,使用getchar()时每次迭代的末尾有一条“读取语句”。可以将读取和测试合并为一个表达式:
#include<stdio.h>
int main()
{
char ch;
while ((ch = getchar()) != '\n')
{
if (ch == ' ')
{
putchar(ch);
}
else
{
putchar(ch + 1);
}
}
return 0;
}
这里可以很好的体现C特有的编程风格——把俩个行为合并成一个表达式。
以上执行的行为是赋值给ch和把ch的值与换行符作比较。
表达式ch=getchar()俩侧的圆括号让其称为!=运算符的左值,读取ch的值后,测试条件相当于是ch!=‘\n’。
【注意】ch=getchar()俩侧的圆括号一定需要存在,因为!=运算符的优先级比=高。
putchar(ch + 1);
此语句可以很好的演示字符实际上是作为整数存储的,表达式ch+1中的ch被转换成int类型,然后int类型的计算结果被传递给接受一个int类型参数的putchar().