C語言之getchar()和putchar()函式
阿新 • • 發佈:2018-11-21
一、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》(第六版)