while((c = getchar()) != EOF)(键盘输入问题)
问题描述:

样例输入:O S
样例输出:I A
代码实现:
#include <stdio.h> char *s = "`1234567890-=qwertyuiop[]\\asdfghjkl;'zxcvbnm,./'";
int main()
{
int c,i;
while((c = getchar()) != EOF)
{
for(i = ;s[i] && s[i]!=c;i++);
if(s[i])
{
putchar(s[i-]);
}
else
{
putchar(c);
}
}
return ;
}
个人的想法:
输入缓冲是行缓冲。当从键盘上输入一串字符并按回车后,这些字符会首先被送到输入缓冲区中存储。注意返回的只是一个字符,这个字符也就是输入的第一个字符,缓冲区的第一个。然后再次调用getchar(),它会判断缓冲区中是否已有数据,如果有数据就读取缓冲区的第一个字符,然后返回。这样依次下去,直到缓冲区为空,才会等待输入数据。这就是为什么输入abc会打印abc。
while((c = getchar()) != EOF)(键盘输入问题)的更多相关文章
- C语言程序设计(四) 键盘输入和屏幕输出
第四章 键盘输入和屏幕输出 转义字符 \n 换行,光标移到下一行的起始位置 \r 回车(不换行),光标移到当前行的起始位置 \0 空字符 \t 水平制表 \v 垂直制表 \b 退格 \f 走纸换页 \ ...
- while ((ch = getchar()) != EOF)中ch定义为char还是int型?cin、scanf等如何结束键盘输入
2013-07-09 18:55:42 EOF是文件的结束符,具体可以作为文本文件的结束符,也可以作为键盘输入char类型数据时的结束符.对于不同的系统,EOF的定义可能不同,一般定义为-1.因为ch ...
- getchar()函数的返回值赋给char型,用if(ch=getchar() != EOF)测试,输入ctrl+z同样可以结束循环的分析
2013-07-18 21:35:58 getchar()函数的返回值赋给char型,用if(ch=getchar() != EOF)测试,输入ctrl+z同样可以结束循环的分析. char是字符型数 ...
- invalid types 'int[int]' for array subscript// EOF 输入多组数据//如何键盘输入EOF
数组维度搞错了 一次运行,要输入多组数据,直到读至输入文件末尾(EOF)为止 while(scanf("%d %d",&a, &b) != EOF) // 输入结束 ...
- java Scanner与BufferedReader读取键盘输入性能比较
java Scanner与BufferedReader读取键盘输入性能比较 1.Scanner和BufferedReader 性能比较 在java中常见的从键盘获取输入的方式有 ...
- gets和从键盘输入换行符
i was wrong! 虽然setbuf可以让程序自己管理缓冲,但是像getchar,gets这些标准IO函数还是要通过隐藏的stdin进行操作,而stdin是啥呢?还是一个FILE*,而FILE* ...
- python通过标准输入读取内容,读取键盘输入的内容?接收用户输入?
需求说明: 在交互式脚本中,需要用户手动输入内容,并对内容进行处理.在这里记录下通过 python的内置函数input()读取标注输入的内容.默认的标准输入是键盘. 操作过程: 1.通过input() ...
- 用Delphi模拟键盘输入
在Windows大行其道的今天,windows界面程序受到广大用户的欢迎.对这些程序的操作不外乎两种,键盘输入控制和鼠标输入控制.有时,对于繁杂的,或重复性的操作,我们能否通过编制程序来代替手工输入, ...
- C语言实现顺序表的基本操作(从键盘输入 生成线性表,读txt文件生成线性表和数组生成线性表----三种写法)
经过三天的时间终于把顺序表的操作实现搞定了.(主要是在测试部分停留了太长时间) 1. 线性表顺序存储的概念:指的是在内存中用一段地址连续的存储单元依次存储线性表中的元素. 2. 采用的实现方式:一段地 ...
随机推荐
- 【Android学习日记】
(一) Android 开发基础 1 Android平台的特性 1) 应用程序框架支持组建的重用和替换,包括打电话应用程序.文件管理器等. 2) Dalvik虚拟机专门为移动设备做了优化,Dalv ...
- 在mac上安装svn客户端
mac 10.8上面,默认是没有svn客户端的,可以通过以下两种方式来安装: 1.单独安装xcode命令行工具,安装完成后,在终端中就可以使用svn命令了,目前版本是1.6.18: 2.去 ...
- 理解MVC模式
理解一般意义上的MVC模式 MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为以下三个基本部分: 模型(Model):模型用于封装与应用程序的业务逻 ...
- [JS]setInterval,setTimeout的使用以及伪随机数
- CF 500 C. New Year Book Reading 贪心 简单题
New Year is coming, and Jaehyun decided to read many books during 2015, unlike this year. He has n b ...
- iframe替代方案
自己写一个pagelet框架.封装成JSP的Taglib. <tms:view header="common-header" footer="common-foot ...
- java之生产者与消费者
package com.produce; import java.util.LinkedList; import java.util.Queue; /*@author shijin * 生产者与消费者 ...
- English article1
1. Midlife for many is a time of transition, a time of questioning and a time of change, not just ph ...
- C++学习5
类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量:创建对象的过程也叫类的实例化.每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数. 与结构体一样,类 ...
- 理论沉淀:隐马尔可夫模型(Hidden Markov Model, HMM)
理论沉淀:隐马尔可夫模型(Hidden Markov Model, HMM) 参考链接:http://www.zhihu.com/question/20962240 参考链接:http://blog. ...