getchar()的使用

来源:互联网 发布:windows 10中文包 编辑:程序博客网 时间:2024/05/22 07:53

在使用getchar()时,常常会因为获取了换行符而影响了程序的运行。

比如说:当你输入一个字符w,然后enter,在第一次使用getchar时,会正确获取到w字符;紧接着再一次使用getchar时,获取的字符是‘\n’;如下面程序:

#include <stdio.h>#include <stdlib.h>/* run this program using the console pauser or add your own getch, system("pause") or input loop */int main(int argc, char *argv[]) {char c;c=getchar();printf("c is : %c\n",c); c=getchar();if(c=='\n'){printf("c is : %c\n",c); }return 0;}

运行结果如下:

若想排除换行符,可以在第一次使用getchar后,添加一下代码:

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

这样就可以除去‘\n’的干扰了,后面就可以正常使用getchar这个函数了。

下文参考别人的解释:

因为我们输入的字符串并不是取了第一个字符就把剩下的字符串丢掉了,它还在我们的内存中,就好比,开闸放水,我们把水放到闸里去以后,开一次闸就放掉一点,开一次就放掉一点,直到放光了为止,这里开闸动作就相当于调用一次getchar()。我们输入的字符串也是这么一回事,首先我们输入的字符串是放在内存的缓冲区中的,我们调用一次getchar()就把缓冲区中里出口最近的一个字符输出,也就是最前面的一个字符输出,输出后,就把它释放掉了,但后面还有字符串,所以我们就用循环把最前面的一个字符一个个的在内存中释放例子中循环条件里的'\n'实际上就是你输入字符串后的回车符,所以意思就是说,直到遇到回车符才结束循环,而getchar()函数就是等待输入(或缓冲区中的数据)直到按回车才结束,所以实现了整个字符串的输出。



0 0
原创粉丝点击