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

news/2024/9/22 13:46:35/

文章目录

  • 一、字符专用接收函数
    • 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一样都是从缓冲区域进行输出。


http://www.ppmy.cn/news/1504165.html

相关文章

正点原子imx6ull-mini-Linux驱动之platform设备驱动实验(14)

我们在前面几章编写的设备驱动都非常的简单,都是对IO进行最简单的读写操作像I2C、 SPI、LCD 等这些复杂外设的驱动就不能这么去写了,Linux 系统要考虑到驱动的可重用性,因此提出了驱动的分离与分层这样的软件思路,在这个思路下诞生…

python 去除验证码图片噪音

在处理验证码图片时,出现噪音,如横线、像素点等问题往往会影响识别率,这里给出一个去除噪音的方法,仅供学习。 import cv2 import os import numpy as np import copydef del_noise(img, number):height img.shape[0]width img…

torch的register_forward_hook作用

torch的register_forward_hook作用 register_forward_hook 是 PyTorch 提供的一个方法,用于在模型的前向传播过程中注册一个钩子函数。这个钩子函数可以在前向传播过程中对指定层的输入和输出进行操作或记录。它常用于调试、特征提取或修改模型行为。 以下是 regi…

【CSDN平台BUG】markdown图片链接格式被手机端编辑器自动破坏

bug以及解决方法 现在是2024年8月,我打开csdn手机编辑器打算修改一下2023年12月的一篇文章,结果一进入编辑器,源码就变成了下面这个样子,我起初不以为意,就点击了发布,结果图片全部显示不出来了。 而当我修…

一文带你掌握C++模版

12. C模板 什么是模板 模板编程也可以叫做泛型编程,忽略数据类型的一种编程方式 //求最值问题 int Max(int a,int b) {return a>b?a:b; } double Max(int a,int b) {return a>b?a:b; } string Max(string a,string b) {return a>b?a:b; …

【Axure教程】拖拉拽编辑页面

低代码开发平台通常提供拖拉拽编辑页面的功能,使用户无需编写大量代码即可创建复杂的应用程序和页面。这种平台的特点是通过图形用户界面来进行开发,用户可以拖拽组件到画布上进行布局和配置。 那今天作者就教大家在Axure里怎么制作拖拉拽动态编辑页面的…

【Java】解决如何将Http转为Https加密输出

目录 HTTP转HTTPS一、 获取 SSL/TLS 证书二、 安装证书2.1 Apache2.2 Nginx 三、更新网站配置四. 更新网站链接五. 检查并测试六. 自动续期(针对 Lets Encrypt) HTTP转HTTPS 将网站从 HTTP 转换为 HTTPS 能够加密数据传输,还能提高搜索引擎排…

SQL查询注意事项

判断字符串长度要用函数CHAR_LENGTH(str),他会返回字符串的长度,如果使用length(str)函数,在对中文字符或特殊字符时,返回的是在当前编码下该字符的字节数。如在mysql中的utf-8编码情况下,length(¥)返回结果…