【C语言】getchar函数的控制台输入原理,回车符的处理
来源:互联网 发布:淘宝房产司法拍卖 编辑:程序博客网 时间:2024/06/10 09:36
getchar函数的功能是从输入流读取一个字符,这是我们要明确的就是:
我们在控制台需要输入至少两个字符才能保证这个函数的执行:
例如:
源程序:
char ch;
ch = getchar();
我们需要在标准输入流里面输入 ”w 回车“,就是需要至少输入两个字符,一个是接受的正常字符,另一个就是回车换行符,这个回车符的作用就有些像触发器,只要输入了回车符源程序就会进行一次执行,如果在输入流中一次输入了足够多的数,那么以后就不用输入了,因为源程序里面的所有接受输入流的函数都会自动从这个输入流缓冲区里面读取数据。
比如baidu一位网友问的问题,非常好:
scanf("%c",&a); // 向a输入一个字符gets(b); //向b输入一个字符串gets(c); //向c输入一个字符串当我输入一个字符到a后,回车怎么会直接跳到输入字符串c我调试看了下,它会自动在a输入完后,向b输入字符'\0'这是为什么了??
原因就是,开始的时候输入了两个字符,回车符触发了程序的运行,当程序读完第一个字符后,就把第一个字符赋值给了 scanf函数,接着那个回车符就被gets(b)读去了,再接着缓冲区空了,这是就自然又要用户从输入流中输入字符并以回车结束。
getchar函数和scanf函数一样。
目前我知道的解决的办法有两个:
1 可以在这两个函数后面 加一个读取那个回车符的函数,getchar();
2 如果是scanf()函数可以 直接写读入回车符 scanf("%c\n",&a);主要是添加 格式字符串后面的那个 \n。至于原理现在我还说不太清,但感觉可能是 两个换行符同时出现所以编译器自动消掉了一个吧。此问题还在探索中。。。
- 【C语言】getchar函数的控制台输入原理,回车符的处理
- C语言中scanf函数输入回车符的问题
- C语言中scanf函数输入回车符的问题
- C语言中scanf函数输入回车符的问题
- C语言中scanf函数输入回车符的问题
- C语言中scanf函数输入回车符的问题
- C语言中scanf函数输入回车符的问题
- c getchar() 函数的使用注意 、换行符的处理
- C语言中getchar()函数的理解
- C语言中getchar()函数的理解
- C语言 getchar(),putchar()函数的使用
- getch和getchar的回车处理
- C语言的格式化输入将回车输入的问题
- C语言中接受控制台的输入
- C语言控制台的输入与输出
- 不用回车的getchar()
- C语言使用scanf函数获取数据后,使用getchar()无法获得字符的处理方法
- C语言中getchar()、gets()和scanf()的特点以及scanf产生的多余回车符问题
- Netstat 命令
- xcode,cocosbuilder,cocos2dx开发学写过程
- 堆和栈的区别
- Qt中文显示
- 原型模式
- 【C语言】getchar函数的控制台输入原理,回车符的处理
- android 使用 ndk生成.so文件
- selenium2---XPATH语法
- ORACLE:中文排序
- cocos2d-x 一些简便方法
- 基于S3C2440的嵌入式Linux驱动——DS18B20温度传感器(添加使用platform总线机制)
- memcached server LRU 深入分析
- java 静态变量和实例变量的区别
- iPhone5和iOS6上HTML5开发的新增功能