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

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。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值