1 函数介绍

1)  函数原型

int    getchar(void);

2)  函数功能

从stdin中读取一个字符。

3)  返回值

返回读取字符的ASCII值或者EOF字符或者出错值。

4)  头文件

#include

2 函数使用

2.1 getchar函数的特点

Linux下编写的一个例子:

#include

int main(void)

{

char ch;

int num;

num = 0;

printf("input your strings:\n");

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

printf("%c ", ch);

num++;

}

printf("\nThe string length is %d\n", num);

return 0;

}

编译程序:gcc        –Wall        getchar.c          –o     getchar

运行程序:./getchar  [回车]

//提示:当程序运行到while循环中的getchar时,界面等待用户输入字符,直到回车出现

input your strings:

输入字符串:hello getchar

在输入这段字符串的过程中getchar函数没有发生从stdin读取字符的操作(因为没有任何的字符输出),当在输入字符串后按下回车后界面输出情况如下:

input your strings:

hello getchar

h e l l o   g e t c h a r

The string length is 13

misskissc@monday:~$

由程序执行过程及结果可推理getchar在等待用户输入时有两个特征:

1)       getchar没有立即读从键盘敲进来的字符,而是等用户按下回车之后再开始读字符。

2)       getchar每次只读取一个字符,如果程序中不采用循环而只设置一个getchar()语句,则getchar只读取输入字符串的首个字符,其余字符依然留在缓存区中(若将程序的while循环去掉只输出第一个字符)。

2.2 getchar读取回车字符么?

现将以上程序的while( (ch = getchar()) != '\n')改为while( (ch = getchar()) != 'n')其余部分保持不变。重新编译并运行程序,输入字符串:hello[回车]

得第一次运行结果

当程序首次执行到while中的getchar时,getchar函数等待用户的输入,getchar函数一直等待用户输入,当用户按下回车表示用户输入完毕,getchar开始逐个读取输入的字符串,将用户输入的所有字符读取完毕后(因为while的条件为真),再次等待用户的输入:

此次输入字符’n’,注意输入字符’n’时的位置,为什么不是在o后面呢,而是换了一行而且相隔了一个空格呢?其实是因为上一次getchar读了一个回车,并被输出到了界面之上使字符界面得以换了行。输入字符’n’没有按回车之前getchar函数是不会发生读操作的,当在输入字符’n’后按下回车后程序就会结束(或者在输入字符’n’后再输入其它的字符后再按下会车,程序依然将会结束,只是字符’n’后面的字符不会被getchar函数读取,因为while循环的条件已经为假)并得到以下输出界面

String输入字符串的长度为6在一次表明getchar读取了用户输入的回车。字符’n’虽然被读取,但是不会被计数,因为此时while的条件为假了呗。

3 额外总结

函数本身的特性与语句条件限制两者各自带来的作用需要分清楚。

Note Over。

linux中getchar函数用法,linux getchar函数使用相关推荐

  1. linux中strlen的用法,实现strlen()函数,strcmp()函数 const知识点

    实现strlen()函数,strcmp()函数 const知识点 发布时间:2020-08-03 05:49:13 来源:51CTO 阅读:576 作者:汇天下豪杰 1.strlen()函数的实现:# ...

  2. linux中execve的用法,Linux 的 execve 函数

    execve 函数是所有执行程序函数最底层的实现了,其参数为 int execve (const char *__path, char *const __argv[], char *const __e ...

  3. linux中man手册用法,Linux中man手册的使用

    在linux中,不管是库函数还是系统调用,都用到man手册来查看函数的三要素(功能.参数.返回值),这里就详细的介绍一下man手册的使用.这里需要注意的是:对于初学者来说,不能将手册页当教程,因为它只 ...

  4. linux中ftp的用法,linux中的ftp命令用法(7页)-原创力文档

    第 第 PAGE 1 页 共 NUMPAGES 1 页 linux中的ftp命令用法 Linux系统中的ftp命令功能强大,那么它的具体用法是怎样呢?下面由小编为大家整理了linux中的ftp命令用法 ...

  5. linux中comm的用法,linux中comm命令用法

    linux系统中comm命令用法详解 linux系统下的comm命令是一个非常实用的文件对比命令. comm命令功能:   选择或拒绝两个已排序的文件的公共的行. comm命令语法:comm [-12 ...

  6. Linux中close的用法,linux下 open() write() read() close函数

    1. open()函数 功能描述:用于打开或创建文件,在打开或创建文件时可以指定文件的属性及用户的权限等各种参数. 所需头文件:#include ,#include ,#include 函数原型:in ...

  7. Linux中cron的用法,Linux中cron命令的用法详解

    linux中有一个命令可以定期来执行系统任务.这就是crond服务.下面介绍下crontab命令的用法. linux任务调度的工作主要分为以下两类: 编辑/etc/crontab 文件配置cron c ...

  8. linux中expr的用法,linux expr命令参数及用法详解(示例代码)

    expr用法 expr命令一般用于整数值,但也可用于字符串.一般格式为: #expr argument operator argument expr也是一个手工命令行计数器. #$expr 10 + ...

  9. linux中uniq的用法,linux uniq命令用法

    uniq命令: 对指定的ASCII文件或标准输入进行唯一性检查,以判断文本文件中重复出现的行,常用于分析日志:查看tcp各个状态连接数,ip或域名连接数排名等等场景,一般与 sort 命令结合使用. ...

  10. 面试linux中sed的用法,linux中sed命令的使用与注意小结

    前言 sed是一种流编辑器,它是文本处理中非常有用的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为『模式空间』(pattern space),接着用s ...

最新文章

  1. 如何让AI机器人的对话更加自然?
  2. IEEE:2021年的机遇、挑战以及关键的科技趋势
  3. 前端菜鸡之路——网页上的图标
  4. asp.net 网站开发流程总结
  5. 7-26 单词长度 (15 分)
  6. Java学习,继承关系的学习和理解
  7. 初次见面C#排坑记录
  8. WordPress: 使用 wp_insert_attachment 上传附件
  9. linux中常见的文件操作命令
  10. DevOps使用教程 华为云(15)git如何将本地项目初始化为远程仓库
  11. 最新隐马尔可夫模型HMM详解
  12. 支付宝、京东支付场景之策略模式实战
  13. SAP FI 会计凭证批量创建实现 客户/供应商/资产
  14. python数据分析师面试_数据分析师面试_业务分析师_数据分析场景如何结合企业业务分析...
  15. webmail lite php,WebMail Lite - 从Gmail,Yahoo,Outlook和其他管理和下载邮件
  16. 区块链开发者招聘:IOST开发者计划
  17. 已安装ME,PR队列导出仍无法打开ME
  18. html表单选择城市,基于weui的城市选择器(city-picker)
  19. nginx做缓存服务器、代理、文件服务器等笔记
  20. PHPStorm+PHPStudy的PHP开发环境配置

热门文章

  1. 浅谈局域网ARP攻击的危害及防范方法(图)
  2. 最大团问题(迭代回溯法)
  3. 2020 4月 月末总结(飞速流逝的一个月)
  4. u盘怎么安装计算机系统,教您如何用u盘装系统
  5. 请你预想一下量子计算机未来,直播,研究量子计算机的我被曝光了
  6. 栅栏布局合并html,制作简约CSS栅栏布局
  7. 网络安全现状及防范措施
  8. 页面显示\n\tat的问题
  9. 关于阿里云服务器的问题及答案(详细汇总)
  10. xp无法搜索计算机,windows xp系统笔记本电脑搜索不到无线信号的解决方法