1. 程式人生 > >C語言之getchar()和putchar()函式

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 <stdio.h>
#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.執行結果
在這裡插入圖片描述

四、舉個例子2

1.一個統計單詞的程式,計算字元數和行數。
2.原始碼

// 統計字元數
#include <stdio.h>
#include <ctype.h> //為isspace()函式提供原型
#include <stdbool.h> //為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 Primer Plus》(第六版)