首页 > 其他分享 >getchar()和putchar()

getchar()和putchar()

时间:2023-02-14 21:32:55浏览次数:31  
标签:字符 ch putchar 函数 打印 getchar

前面介绍过使用scanf()和printf()根据%c转换说明读写字符,同时也介绍过在输入字符时,用专门的字符处理函数效率会更高,下面将介绍两个读取和输出字符的函数:getchar()和putchar()。

1.getchar()和putchar()

getchar()函数不带任何参数,它从输入队列中返回下一个字符,如​​ch = getchar();​​​,与​​scanf("%c", &ch);​​​效果相同。putchar()函数打印它的参数,​​putchar(ch);​​​与​​printf("%c", ch);​​效果相同。但由于这些只处理字符,所以它们更快、更简洁,而且getchar()和putchar()不需要转换说明,因为它们只处理字符,这两个函数通常定义在stdio.h头文件中,它们通常是预处理宏,而不是真正的函数。

下面编写一个程序,以实现:如果字符是空白,则原样打印;否则,打印原字符在ASCII序列的下一个字符。

#include <stdio.h>
#define SPACE ' '

int main(void){
char ch;

while((ch = getchar()) != '\n'){ //输出不是换行符则执行循环体
if(ch == SPACE) //字符是空格,原样打印
putchar(ch);
else
putchar(ch + 1); //打印下一个字符
}
putchar(ch); //打印换行符
return 0;
}

2.ctype.h系列的字符函数

上述程序实现对字符的转换打印,但没有打印出来的效果并不是特别好看,因为有些非字母字符,可能打印出看起来并不好,如果能够只对字母字符进行处理,效果会好很多,但是可能增加编程的复杂度。C语言有一系列专门处理字符的函数,ctype.h头文件包含了这些函数的原型,这些函数接受一个字符作为参数,如果这些字符属于某些特殊的类别,则返回一个非零值,否则返回0。

#include <stdio.h>
#include <ctype.h> //包含isalpha函数原型

int main(void){
char ch;

while((ch = getchar()) != '\n'){ //输出不是换行符则执行循环体
if(isalpha(ch)) //如果ch是字母,isalpha返回一个非0值
putchar(ch + 1);
else
putchar(ch); //否则,原样打印
}
putchar(ch); //打印换行符
return 0;
}

下表是ctype.h头文件中的一些函数:

字符测试函数

属于下列参数,返回值为真(非0)

isalnum()

字母或数字

isalpha()

字母

isdigit()

数字

isprint()

可打印字符

isgraph()

除空格之外的可打印字符

ispunct()

标点符号

isblank()

标准空格符(空格、水平制表符或换行符)或本地指定空白字符

isspace()

空白字符(外加回车符、换页符、垂直制表符)

islower()

小写字母

isupper()

大写字母

字符映射函数不会修改原始的参数,这些函数只会返回已修改的值。

字符映射函数

行为

tolower()

如果参数是大写字母,则返回小写字母;否则,返回原始参数

toupper()

如果参数是小写字母,则返回大写字母;否则,返回原始参数

标签:字符,ch,putchar,函数,打印,getchar
From: https://blog.51cto.com/u_15944236/6057427

相关文章

  • 《C语言程序设计》1.5while(getchar()!=EOF)与xcode的适配问题
    最近在复习C语言,《C语言程序设计》1.5字符输入/输出部分涉及到如下代码:while(getchar()!=EOF)输入一段字符串并回车后发现无法跳出while循环。首先尝试用键盘输入EOF,......
  • getchar
    //getchar#include<stdio.h>intmain(){ // charpassword[20]={0}; printf("请输入密码:>"); scanf_s("%s",password); printf("请确认密码(Y/N):>"); //清......
  • C语言getchar和putchar是怎么实现的?
    所有的stdio库函数,比如包括getchar/putchar/getc/putc之类的,都会经过stdiobuffer:如果从最简单的实现来说,可以把FILE结构体定义成下面这样:typedefstruct_iobuf{......
  • scanf() getchar()输入问题
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>intmain(){intret=0;intch=0;charmima[20]={0};printf("请输入密码:");scanf("%s",mima);prin......
  • C语言中的getchar、putchar函数
    getchar可以接受键盘上打印的字符,puchar可以进行输出字符比如:#include<stdio.h>intmain(){intch=getchar();putchar(ch);printf("%c\n",ch);return0;}运......
  • switch,putchar,getchar
    今天主要自学了switch,putchar,getchar语句加深了一下理解#include<stdio.h>intmain(){ intch; while((ch=getchar())!=EOF)//getchar接受字符 { putchar(ch);......
  • putchar与getchar
    putchar基本功能:字符输出,输出时只能一个一个来例如:先后输入BOY三个字符#include<stdio.h>intmain(){chara='B',b='O',c='Y';putchar(a);putchar(b);putchar(c);......
  • Unity使用Font.GetCharacterInfo 和 Font.RequestCharactersInTexture获取UnityEngine
    usingUnityEngine;usingUnityEngine.UI;publicclassFontTest:MonoBehaviour{voidStart(){Test();}voidTest(){str......