| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 760 人关注过本帖
标题:关于字符数据的输入问题
只看楼主 加入收藏
firewater
Rank: 1
等 级:新手上路
帖 子:47
专家分:4
注 册:2014-7-13
结帖率:87.5%
收藏
 问题点数:0 回复次数:19 
关于字符数据的输入问题
在做一个例题时,有一个语句while (getchar()!='\n')  我想问下为什么输入的字符不用存进一个字符变量中,如果没有存进内存中,怎么和'\n'比较
2014-08-31 20:53
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
没有后用的,就可以不储存,废弃了。其实很多带返回值的函数,我们调用时都没有储存赋值,也是这样,看看printf()函数,它是有返回值的,你用了吗?

授人以渔,不授人以鱼。
2014-08-31 21:00
wssy213
Rank: 12Rank: 12Rank: 12
来 自:湖南
等 级:贵宾
威 望:10
帖 子:967
专家分:3703
注 册:2014-6-6
收藏
得分:0 
输入的字符首先保存在键盘缓冲区中,也就是在内存中

坚持----------------------------------唯一的道路
shit ! ! !
2014-08-31 21:05
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用wssy213在2014-8-31 21:05:12的发言:

输入的字符首先保存在键盘缓冲区中,也就是在内存中

getchar()已经把数据从输入缓冲区中提取出来了,数据流是移动的。

授人以渔,不授人以鱼。
2014-08-31 21:07
wssy213
Rank: 12Rank: 12Rank: 12
来 自:湖南
等 级:贵宾
威 望:10
帖 子:967
专家分:3703
注 册:2014-6-6
收藏
得分:0 
回复 4 楼 TonyDeng
恩恩

坚持----------------------------------唯一的道路
shit ! ! !
2014-08-31 21:13
firewater
Rank: 1
等 级:新手上路
帖 子:47
专家分:4
注 册:2014-7-13
收藏
得分:0 
回复 2 楼 TonyDeng
输入一个字符,并未存入内存中,而是直接与\n比较?是吧
2014-08-31 21:59
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
getchar()函数的动作:从输入缓冲区中提取最前面的一个数据给函数内部一个局部变量,然后用return返回这个变量给调用函数。getchar()在return后销毁内部的局部变量,而那个值已经复制到调用处的栈中,如果调用处没有储存这个值,那么它就随着程序的运行而消失。

1楼的代码,是在调用处将return回来的那个值直接与'\n'比较,不储存。注意:数据是储存在栈中的,如果没有变量储存,那么它就被标记为可以回收利用的,只要程序需要,这个地址处的数据随时被挪为他用。这就是丢弃数据,很常见的。

授人以渔,不授人以鱼。
2014-08-31 22:06
firewater
Rank: 1
等 级:新手上路
帖 子:47
专家分:4
注 册:2014-7-13
收藏
得分:0 
回复 7 楼 TonyDeng
还想问下,既然键入的字符存在键盘缓冲区中,那么用putchar(getchar())也可输出相应字符,并不需要定义一个变量来存放。那么如果我想用while语句实现读入一个字符后立即输出该字符,直到输入一个换行符为止,那我用
程序代码:
#include "stdio.h"

void main ()

{
    while (getchar()!='\n')
    {
        putchar(getchar());
    }
}



为什么不能输出相应的字符
2014-09-01 09:03
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
每调用一次getchar()就取出一个新的数据,人不能两次踏入同一条河流。

授人以渔,不授人以鱼。
2014-09-01 09:42
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
getchar()/putchar()/scanf()/printf()/gets()这类在stdio头中的函数,叫做“流函数”,顾名思义,那就如水流一般的数据模型。

授人以渔,不授人以鱼。
2014-09-01 09:50
快速回复:关于字符数据的输入问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012327 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved