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。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • WireShark抓包分析

    WireShark抓包分析简述:本文介绍了抓包数据含义,有TCP报文、Http报文、DNS报文。如有错误,欢迎指正。1、TCP报文TCP:(TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于点对点的通讯)源IP地址:发送包的IP地址;目的IP地址:接收包的IP地址;源端口:源系统上的连接的端口;目的端口:目的系统上的连接的端口。T

  • ucosiii应用举例_SATA III接口

    ucosiii应用举例_SATA III接口任务的创建和删除实验uCOSIII是多任务系统,那么肯定要创建任务,创建任务就是将任务控制块、任务堆栈、任务代码等联系在一起,并且初始化任务控制块的相应字段。在UCOSIII中我们通过函数OSTaskCreate();来创建任务,OSTaskCreate();函数原型如下(在os_task.c中有定义)。电泳OSTaskCreate();创建一个任务之后,刚创建的任务就会进入就绪状态,注意!

  • Exception from HRESULT: 0x80070057 (E_INVALIDARG)

    Exception from HRESULT: 0x80070057 (E_INVALIDARG)ExceptionfromHRESULT:0x80070057(E_INVALIDARG)异常。解决方案:清除ASP.NET缓存目录中对应的应用程序目录。ASP.NET缓存目录如下:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\TemporaryASP.NETFilesC:\Windows\Microsoft….

  • charles导致mac无法上网_mac可以ping通 但是浏览器上不了网

    charles导致mac无法上网_mac可以ping通 但是浏览器上不了网前言charles关闭后,发现网页突然打开了,那大概率是设置了代理,但明明已经关闭了charles,这是由于mac网络偏好设置中,使用的是手动代理,将其改为自动即可解决方法1打开网络偏好设置,

  • 用Erlang实现Time Wheel

    用Erlang实现Time Wheel

  • 什么软件自动刷点击量(不同的IP在刷网站)

    网络爬虫是目前各大企业获取数据的主要方式,很多人都知道爬虫使用代理IP,但对其中的原因却知之甚少。那为什么代理IP能帮助网络爬虫呢?1、已解决IP限制。目前大部分网站都有反爬虫技术,最常见的限制是IP接入。假如本站点的IP被封掉,可以用代理IP换IP后继续爬虫。2、提高爬虫的效率。如今有了工作效率的要求,不仅是使用单一的爬虫,为了提高爬虫的效率,可以使用多个爬虫来爬虫,这需要更多的IP,同时也需要IP的更换,自然离不开代理IP。以上介绍代理IP对网络爬虫的帮助关键,大家都有了认识,找代理IP时要找高.

发表回复

您的电子邮箱地址不会被公开。

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