当前位置: 首页> 汽车> 行情 > 字符专用输入输出函数 getchar() putchar()

字符专用输入输出函数 getchar() putchar()

时间:2025/7/9 10:11:12来源:https://blog.csdn.net/weixin_62168696/article/details/140882439 浏览次数: 0次

文章目录

  • 一、字符专用接收函数
    • 1.1 scanf实现字符接收
    • 1.2 字符专用接收函数getchar
    • 1.3 练习
    • 1.4 利用循环使字符接收函数接收字符串的元素
  • 二、字符专用输出函数
    • 2.1 printf实现打印字符
    • 2.2 字符专用输出函数putchar


提示:以下是本篇文章正文内容,下面案例可供参考

一、字符专用接收函数

在c语言中,想要输入字符有两种方法,第一种是scanf函数输入字符,第二种则是字符专用接收函数

1.1 scanf实现字符接收

关于scanf的具体详细的使用方法可以看小编所写的详解printf和scanf

int main() 
{char arr; scanf("%c", &arr);#   printf("%c",arr);   return 0;   
}

在这里插入图片描述

1.2 字符专用接收函数getchar

getchar定义

在这里插入图片描述

在这里插入图片描述

代码演示

int main()
{char arr;arr = getchar();printf("%c",arr);return 0;
}

在这里插入图片描述

注意

  • 字符专用接收函数一次只能接收一个字符,如果输入多个字符只获取第一个字符。
  • 字符接收函数没有参数,字符接收函数是从键盘上获取字符值。

1.3 练习

键盘上输入hello,输出是什么字符?

int main()
{char arr;arr = getchar();printf("%c",arr);return 0;
}

在这里插入图片描述

1.4 利用循环使字符接收函数接收字符串的元素

在这里字符接收函数,一次只能接收一个字符,如果想要接收字符串,我们可以用到循环

int main()
{char arr = '0';do{if(arr != '\n'){arr = getchar();printf("%c", arr);}} while (arr != '\n');return 0;
}

分析

do while循环条件是获取当前的字符,所以他的结束条件是输入的该字符串函数不是换行符(’ \ n’),因为我们在输入一个字符串以后,我们会按下回车键,按下回车键,获得的当前字符为换行符,所以我们获得不是换行符的时候,才说明我们还没有获取结束,如果我们获得当前字符是回车符,那就说明字符串的字符还没有获取结束。所以在这里我们输入一组字符串,先是接收第一个字符,然后打印,判断不是换行符,然后我们在获取下一个字符。

疑问

为什么我们使用getchar接收字符串进行循环打印,为什么能全部打印出来,而不是每次打印第一个字符呢?字符接收函数不是接收一个字符么,为什么还能打印出后面所有的字符呢?

这是因为scanf和getchar并不是直接从键盘上拿数据,而是存在一个缓冲区域,然后getchar从缓冲区域一个一个进行拿值,直到所有值拿完,我们这里拿完第一个字符元素后,缓冲区域还剩下剩下的字符元素,而之前的元素被读走了,不会在存在于缓冲区域,所以可以使用循环接收所有的字符而不是只接收第一个。


二、字符专用输出函数

2.1 printf实现打印字符

关于printf具体详细的使用方法可以看小编所写的详解printf和scanf

int main()
{char ch = getchar();printf("%c",ch);return 0;
}

在这里插入图片描述

2.2 字符专用输出函数putchar

putchar定义

在这里插入图片描述

代码演示

int main()
{char ch = getchar();putchar(ch);  return 0;  
}

在这里插入图片描述

注意

  • 字符专用输出函数一次只能输出一个字符,如果输出多个字符只输出第一个字符。

  • 字符输出函数有参数,字符输出函数参数是字符表达式 (变量,或者字符)。
    在这里插入图片描述
    在这里插入图片描述

  • 使用方法和getchar一样,使用循环输出原理和getchar一样都是从缓冲区域进行输出。

关键字:字符专用输入输出函数 getchar() putchar()

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: