| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1033 人关注过本帖
标题:一个简单有趣的现象
只看楼主 加入收藏
apologz
Rank: 2
等 级:论坛游民
帖 子:56
专家分:24
注 册:2013-2-4
结帖率:66.67%
收藏
 问题点数:0 回复次数:11 
一个简单有趣的现象
程序代码:
#include<stdio.h>
int main(void)
{
    char a = '\015' ;
    printf (" %d ",a );
//      getch ();
    printf (" %c  ",   a  );
    return 0;
}

/*
这个程序运行以后第一个输出并不会显示出来,但是把注释删掉就会不同。
一开始以为是“刷新输出”这个东西在作怪,可现在觉得是回车键造成的。
回车键会覆盖原来那个字符,而更换其他字符则不会。
(第一次发个个人观点帖,水平低望多多关照。)
*/

[ 本帖最后由 apologz 于 2013-8-26 20:00 编辑 ]
2013-08-26 17:11
liufashuai
Rank: 9Rank: 9Rank: 9
来 自:冥界-魔域-魂殿
等 级:蜘蛛侠
威 望:1
帖 子:370
专家分:1374
注 册:2012-6-22
收藏
得分:0 
这个问题很正常!!!

第一个和第二个都有输出
首先告诉你'\015'是控制字符,而且是回车

因此当你不加getch()的时候,第二个输出回车后,覆盖第一个输出,因为程序没有停留,所以允许比较快,因此你看不到第一个输出
当你加上getch()时候,你会看到第一个输出,因为getch()停留等着你输入
当你输入完后,你又看不到第一个输出了,因为回车后输出把第一个输出覆盖,至于你为什么看不到第二个输出,因为控制字符是不可显示字符
当然你换其他字符就没问题了(不要换删除字符)

不知道这样解释能否理解??

有一种落差是,你配不上自己的野心,也辜负了所受的苦难。






2013-08-26 18:01
liufashuai
Rank: 9Rank: 9Rank: 9
来 自:冥界-魔域-魂殿
等 级:蜘蛛侠
威 望:1
帖 子:370
专家分:1374
注 册:2012-6-22
收藏
得分:0 
回复 楼主 apologz
楼主太抠门了,没分。。。。。。

有一种落差是,你配不上自己的野心,也辜负了所受的苦难。






2013-08-26 18:02
apologz
Rank: 2
等 级:论坛游民
帖 子:56
专家分:24
注 册:2013-2-4
收藏
得分:0 
回复 3楼 liufashuai
我不是打算发提问帖的....

难觅知音、同一个编程梦,我们共同进步。
2013-08-26 19:55
apologz
Rank: 2
等 级:论坛游民
帖 子:56
专家分:24
注 册:2013-2-4
收藏
得分:0 
回复 2楼 liufashuai
理解了,回车键替换了字符,额...不过为什么回车键能替换字符?

难觅知音、同一个编程梦,我们共同进步。
2013-08-26 20:01
jg658237
Rank: 7Rank: 7Rank: 7
来 自:青藏高原
等 级:黑侠
帖 子:224
专家分:529
注 册:2013-8-8
收藏
得分:0 
当你加上getch()时候,你会看见程序的运行结果,加getch()相当于停留了再按一次回车后执行
下一个printf();

武功再高也怕菜刀.
2013-08-26 23:05
apologz
Rank: 2
等 级:论坛游民
帖 子:56
专家分:24
注 册:2013-2-4
收藏
得分:0 
回复 6楼 jg658237
就是回车键会代替原有的字符...

难觅知音、同一个编程梦,我们共同进步。
2013-08-26 23:14
liufashuai
Rank: 9Rank: 9Rank: 9
来 自:冥界-魔域-魂殿
等 级:蜘蛛侠
威 望:1
帖 子:370
专家分:1374
注 册:2012-6-22
收藏
得分:0 
回复 7楼 apologz
哥哥,知道为什么叫回车么

我们平时出现下一行的结果在Windows下有两个动作组成,回车,回到第一个字符,换行换到下一行,这才是我们看到的

但是回车就是回到本行的第一个字符处,然后再输出你说会出现什么情况,输出缓冲区也是有指针维护的。

不给分也不安慰下。。。。

[ 本帖最后由 liufashuai 于 2013-8-26 23:55 编辑 ]

有一种落差是,你配不上自己的野心,也辜负了所受的苦难。






2013-08-26 23:53
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用liufashuai在2013-8-26 23:53:32的发言:

哥哥,知道为什么叫回车么

我们平时出现下一行的结果在Windows下有两个动作组成,回车,回到第一个字符,换行换到下一行,这才是我们看到的

但是回车就是回到本行的第一个字符处,然后再输出你说会出现什么情况,输出缓冲区也是有指针维护的。

不给分也不安慰下。。。。
学习了

DO IT YOURSELF !
2013-08-27 09:06
apologz
Rank: 2
等 级:论坛游民
帖 子:56
专家分:24
注 册:2013-2-4
收藏
得分:0 
回复 8楼 liufashuai
学习了,安慰下。。。

难觅知音、同一个编程梦,我们共同进步。
2013-08-27 16:04
快速回复:一个简单有趣的现象
数据加载中...
 
   



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

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