linux中getchar函数用法,linux getchar函数使用

linux中getchar函数用法,linux getchar函数使用1函数介绍1)函数原型intgetchar(void);2)函数功能从stdin中读取一个字符。3)返回值返回读取字符的ASCII值或者EOF字符或者出错值。4)头文件#include2函数使用2.1getchar函数的特点Linux下编写的一个例子:#includeintmain(void){charch;intnum;num=0;printf…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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的条件为真),再次等待用户的输入:

3c8fa2de502dc0c336f6f815b3ca51d5.png

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

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

3 额外总结

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

Note Over。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180589.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月18日 下午3:46
下一篇 2022年10月18日 下午4:00


相关推荐

  • 电平转换芯片整理「建议收藏」

    电平转换芯片整理「建议收藏」最近做项目遇到的电平转换芯片比较多,这两天会持续汇总整理一下。1.何为电平转换芯片?简言之,就是在不同电压等级的系统电路中,两者通讯也满足信号电平匹配,如果不匹配,就必须要电平转换,电平转换芯片就是为这个而存在的。2.那电平转换都有哪些类型?这个要从不同通信协议的信号电平说起,我们通常在电子电路中,遇到的都是24V以下的电路系统,举个典型的例子–单片机系统,在单片机电路中,常见的信号电平以3.3V和5V为主,比如C51内核的(ATMEL,此处说明一点:ATMEL公司是搞芯片的,51架构是intel搞

    2022年8月10日
    7
  • 智能体有哪几类?五大核心类型深度解析与2025年应用趋势

    智能体有哪几类?五大核心类型深度解析与2025年应用趋势

    2026年3月15日
    2
  • mysql 在命令行和navicat 查出来的数据不一致,你遇到过吗?[通俗易懂]

    mysql 在命令行和navicat 查出来的数据不一致,你遇到过吗?

    2022年2月10日
    52
  • linux libaio介绍

    linux libaio介绍Linux 的 I O 机制经历了一下几个阶段的演进 1 同步阻塞 I O 用户进程进行 I O 操作 一直阻塞到 I O 操作完成为止 2 同步非阻塞 I O 用户程序可以通过设置文件描述符的属性 O NONBLOCK I O 操作可以立即返回 但是并不保证 I O 操作成功 3 异步事件阻塞 I O 用户进程可以对 I O 事件进行阻塞 但是 I O 操作并不阻塞 通过 select poll epoll 等函数调用来达到此目的 4 异步时间非阻塞 I O 也叫做异步 I O AIO 用户程序可以通过向内核发出 I O 请求

    2026年3月17日
    2
  • Activiti6详细教程

    Activiti6详细教程一、为什么选择Activitiactiviti介绍Activiti是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理,工作流,服务协作等领域的一个开源,灵活的,易扩展的可执行流程语言框架。工作流引擎对比二、核心7大接口、28张表7大接口(一)7大接口RepositoryService:提供一系列管理流程部署和流程…

    2022年7月21日
    40
  • 线性回归与多项式回归

    线性回归与多项式回归线性回归是最简单的一种机器学习算法 可分为一元线性回归和多元线性回归 也就是特征数量不同 这里先主要介绍一元线性回归 举一个简单的例子 有一组带标签样本 xi yi x 是特征 y 是响应变量 标签 认为他们服从线性方程 yi a bxi cy i a bx i cyi a bxi c 其中 b 是回归系数 a bxi 是回归函数 c 则是随机误差 我们要做的就是估计 a b 使得函数对数据尽可能

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号