用getchar和putchar读/写字符

简介: 用getchar和putchar读/写字符

解读

   除了scanf  和 printf,C语言中还提供了专门读写字符的函数 getchar 和 putchar ,getchar 是一次只能读入单个字符,putchar 输出这个字符。


每次调用 getchar 函数时,他会读入一个字符并返回这个字符的 int 类型,为了保存这个字符,要把它储存到一个变量中,如 ch=getchar() ,而putchar 是输出一个字符.


   getchar 与 scanf 相比速度更快,主要有两个原因:


1> getchar 只读入字符,比较简单,而 scanf 可以输入各种类型,速度比较慢;

2> 为了额外的速度提升,一般都是讲getchar 函数和 putchar 作为宏来实现的;

和 scanf 一样,getchar 在读取字符时也不会跳过空白字符。


getchar 的惯用法


while(getchar()!='\n')

实际上我们直接把getchar 和\n 比较,如果不等,那么执行循环体的代码,可以很好的计算输入字符的长度。

getchar的实例


1> 计算输入字符串的长度

#include <stdio.h>
int main()
{
    int len = 0;
    printf("enter a message :");
    while (getchar() != '\n')
        len++;
    printf("your message was %d character (s) long .\n", len);
    
    return 0;
}

在 getchar 内输入一段话,计算出这段话的长度,



2>大小写转化



如果用 scanf 输入,最后会多输出一个*号,

因为在换行时回车键相当于输入一个\n 符号, \n 就会转化成一个*号,要在printf后面输入一个getchar 把\n读取走然后不输出,就可以解决这个问题。

如下:



以上就是关于getchar和putchar的简单解读。

相关文章
|
Ubuntu Linux
Centos 7、Debian、Ubuntu中tree指令的检查与下载
Centos 7、Debian、Ubuntu中tree指令的检查与下载
|
Windows
【Windows 逆向】OD 调试器工具 ( 推荐汉化版的 OD 调试工具 | 吾爱破解专用版Ollydbg | 备选工具 )
【Windows 逆向】OD 调试器工具 ( 推荐汉化版的 OD 调试工具 | 吾爱破解专用版Ollydbg | 备选工具 )
11250 0
【Windows 逆向】OD 调试器工具 ( 推荐汉化版的 OD 调试工具 | 吾爱破解专用版Ollydbg | 备选工具 )
|
9月前
|
存储 网络协议 Linux
第七问:你了解大端和小端字节序吗?
大端和小端是计算机中数据存储的两种字节序方式。大端(Big Endian)将高位字节存储在低地址,小端(Little Endian)将低位字节存储在低地址。大端主要用于网络通信和某些文件格式,确保数据传输的一致性;小端广泛应用于本地计算和硬件优化,提高处理速度。现代大多数 PC 和嵌入式设备使用小端字节序,如 x86 和 ARM 架构。
1649 0
|
存储 编译器 程序员
int 和 long 的区别
int 和 long 的区别
|
存储 C语言
C语言学习记录——动态内存函数介绍(malloc、free、calloc、realloc)
C语言学习记录——动态内存函数介绍(malloc、free、calloc、realloc)
1151 1
|
存储 缓存 Java
Java中缓存实现的最佳实践
Java中缓存实现的最佳实践
|
11月前
|
程序员 C++ 容器
在 C++中,realloc 函数返回 NULL 时,需要手动释放原来的内存吗?
在 C++ 中,当 realloc 函数返回 NULL 时,表示内存重新分配失败,但原内存块仍然有效,因此需要手动释放原来的内存,以避免内存泄漏。
|
自然语言处理 IDE JavaScript
Fitten Code
【8月更文挑战第30天】
565 4
|
11月前
|
缓存 Linux
epel源和yum源有什么不同
此处使用了虚构的URL作为示例,请根据实际情况替换为正确的仓库地址。
819 0
|
存储 SQL 数据库
数据库库表结构设计:原理、实例与最佳实践
数据库库表结构设计:原理、实例与最佳实践
3981 0