首页
社区
课程
招聘
[求助]一个c程序的小疑问
发表于: 2007-10-16 17:01 7014

[求助]一个c程序的小疑问

2007-10-16 17:01
7014
#include<stdio.h>

int main()
{
        char a;
        while((a=getchar())!='\n')
                printf("%x",a);
        return 1;
}

本以为:
输入字符后会立刻转换成十六进制输出然后等待在此输入,以此不断循环,遇回车为止.
但是运行结果却为:
先由用户自由输入,遇到回车后再一起将先前所有输入一起转换输出.

1.为何?
2.实际运行中,那些先前输入的字符是如何存储的?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费
支持
分享
最新回复 (14)
雪    币: 23
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
键盘输入的缓存吧。
2007-10-16 17:13
0
雪    币: 709
活跃值: (2440)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
3
MS有一个缓冲区的...
2007-10-16 17:27
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
缓冲问题,系统不可能你没打一个字母,然后又帮你打印出来,在屏幕上显示字符需要进入内核,这样会很慢,你如果要一输入就打印出来,可以用\n,C函数库看到\n后刷一次缓冲

在linux下有setbuf/setbuffer/setlinebuf/setvbuf函数可以调整缓冲区大小,这样你就可以决定什么时候刷缓冲了

在linux下也可以用flush函数刷缓冲,让系统回写缓冲,这样就可以打印出来了

偶是windows盲,不晓得windows下有没有设置缓冲大小和刷缓冲的函数
2007-10-16 17:30
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
5
#include <conio.h>

getchar --> getchr
2007-10-16 18:40
0
雪    币: 171
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
a=getchar()
应该不是键盘的缓冲区..可能是内存某个缓冲区
2007-10-16 18:41
0
雪    币: 171
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
老大能说的详细点不
关于那个conio.h
个人能力有限,目前还看不懂....
2007-10-16 18:47
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
8
#include<stdio.h>
#include <conio.h>

int main()
{
  char a;
  while((a=getchr())!='\n')
    printf("%x",a);
  return 1;
}
2007-10-16 18:48
0
雪    币: 171
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
呵呵
长见识了...
下次学习linux遇到困难,还要请教您啊 :)
对了,
好像windows's cmd下就满足:
"你没打一个字母,系统然后又帮你打印出来"
2007-10-16 18:51
0
雪    币: 171
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
windowxp2 vc++6.0
Deleting intermediate files and output files for project 'ConverToHex - Win32 Debug'.
--------------------Configuration: ConverToHex - Win32 Debug--------------------
Compiling...
ConverToHex.c
d:\my_project\convertohex\convertohex.c(7) : warning C4013: 'getchr' undefined; assuming extern returning int
Linking...
ConverToHex.obj : error LNK2001: unresolved external symbol _getchr
Debug/ConverToHex.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

ConverToHex.exe - 2 error(s), 1 warning(s)
2007-10-16 18:55
0
雪    币: 3759
活跃值: (3477)
能力值: ( LV15,RANK:500 )
在线值:
发帖
回帖
粉丝
11
getch
您输入的信息太短
2007-10-16 19:10
0
雪    币: 171
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
哈 终于搞定了 谢谢上面帮助的朋友
谢谢版主
2007-10-16 19:42
0
雪    币: 171
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
虽然问题搞定了
但是我却不明白其中原由
恳请forgot兄赐教
2007-10-16 19:54
0
雪    币: 245
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
仔细看看C语言的函数 帮助

getchar 这个函数 就是要 等敲完回车以后才会返回的

getch这个函数 就不一样

函数问题,没什么原理
2007-10-16 20:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
牛啊,太牛了,佩服得要紧,竟然是Linux专家,哈哈,先问声好先……
2007-10-18 16:03
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册