| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 504 人关注过本帖
标题:高手指教一下
只看楼主 加入收藏
呵呵呵。。
Rank: 2
等 级:论坛游民
帖 子:43
专家分:52
注 册:2010-6-11
结帖率:88.89%
收藏
已结贴  问题点数:20 回复次数:4 
高手指教一下
#include <stdio.h>
#include <conio.h>

void main()
{
    char str[4];
    int i;
    for(i=0;i<3;i++)   
        str[i]=getchar();

    printf("%d\n",i);
   
}
以上程序的功能是计算输入字符的次数,我设了三次,
但只能输入两次,输入第二次时I的值就等于3了为什么????
搜索更多相关主题的帖子: 指教 
2010-06-25 12:25
sswin0922
Rank: 2
等 级:论坛游民
帖 子:25
专家分:10
注 册:2008-3-10
收藏
得分:10 
你把str的值也给打出来, 多半是 多了个\n
2010-06-25 13:05
呵呵呵。。
Rank: 2
等 级:论坛游民
帖 子:43
专家分:52
注 册:2010-6-11
收藏
得分:0 
这个我知道,但为什么会自动加了个回车呢,很不解
2010-06-25 13:11
dstone
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:20
专家分:125
注 册:2010-6-17
收藏
得分:10 
你需要去看一下getchar()函数的用法,就理解为什么会这样了
    getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符.getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.   
    还有一个函数是getch(),与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回, getch返回值是用户输入的ASCII码,出错返回-1.输入的字符不会回显在屏幕上.getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行.
2010-06-25 13:20
sswin0922
Rank: 2
等 级:论坛游民
帖 子:25
专家分:10
注 册:2008-3-10
收藏
得分:0 
假如你要输入 字符 ‘a’,当你输入‘a’以后会按一下回车即'\n' 以便执行程序, 所以你这个操作实际上是输入了2个字符 ‘a’ 和‘\n’
当你用getchar时,它只会每次获取一个字符, 所以你的循环会直接循环两次。
linux 终端编程时 有一个设置项可以改变不过去\n, 但是我忘了怎么设置了
2010-06-25 14:04
快速回复:高手指教一下
数据加载中...
 
   



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

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