C语言之getchar()和putchar()函数

一、getchar()函数

getchar()函数不带任何参数,他从队列中返回下一个字符。

ch = getchar()//读取下一个字符的输入,并把该字符的值付给变量ch

该语句与下面的语句效果相同:

scanf("%c", &ch);

二、putchar()函数

putchar()函数打印他的参数。

putchar(ch) //将之前符给ch的值作为字符打印出来

该语句与下面的语句效果相同

printf("%c",ch);

由于上面两个函数只处理字符,所以它们比更通用的scanf()和printf()函数更快、更简洁。且不需要转换说明,因为它们只处理字符。

三、举个例子1

1.该程序吧一行输入重新打印出来,戴氏每个费空格都被替换成元字符在ASCII序列中的下一个字符。
2.源代码

//更改输入,空格不变
#include 
#define SPACE ' ' //SPACE表示单引号-空格-单引号
int main(void)
{
	char ch;
	
	ch = getchar(); //读取一个字符
	while (ch != '\n') //当一行未结束
	{
		if (ch == SPACE) //留下空格
			putchar(ch); //该字符不变
		else
			putchar(ch + 1); //改变其他字符
		ch = getchar(); //获取下一个字符
	}
	putchar(ch); //打印换行符
	
	return 0;
}

3.运行结果
C语言之getchar()和putchar()函数_第1张图片

四、举个例子2

1.一个统计单词的程序,计算字符数和行数。
2.源代码

// 统计字符数
#include 
#include  //为isspace()函数提供原型
#include  //为bool true false 提供定义
#define STOP '|'
int main(void)
{
	char c; //读入字符
	char prev; //读入的前一个字符
	long n_chars = 0L; //字符数
	int n_lines = 0; //行数
	int n_words = 0; //单词数
	int p_lines = 0; //不完整的行数
	bool inword = false; //如果C在单词中,inword等于true
	
	printf("enter text to be analyzed(| to terminate):\n");
	prev = '\n'; //用于识别完整的行
	while ((c = getchar()) != STOP)
	{
		n_chars++; //统计字符
		if ( c == '\n')
			n_lines++; //统计行
		if (!isspace(c) && !inword)
		{
			inword = true; //开始一个新的单词
			n_words++; //统计单词
		}
		if (isspace(c) && inword)
			inword = false; //打到单词结尾
		prev = c;
	}
	
	if (prev != '\n')
		p_lines = 1;
	printf("characters = %ld, words = %d, lines = %d, ",
			n_chars, n_words, n_lines);
	printf("partial lines = %d\n", p_lines);
	
	return 0;
}
				

3.运行结果
C语言之getchar()和putchar()函数_第2张图片

参考资料:《C Primer Plus》(第六版)

你可能感兴趣的:(C语言)