gllw915 于 2010-10-29 16:45:06发表:
太精髓了
Linux-MJ 于 2009-08-07 19:43:25发表:
[i=s] 本帖最后由 Linux-MJ 于 2009-8-7 19:44 编辑 [/i]LZ, 是你没有理解scanf函数对缓冲区的处理, 该函数会将输入缓冲区的字符取走并赋给你的变量. 假如执行你的程序时: scanf("%c",&a); scanf("%c",&b); scanf("%c",&c); 当我输入1并回车后,缓冲区里有两个字符:'1'和'\n', scanf("%c",&a)返回, 此时a='1', 缓冲区里还有'\n'!!! 然后 scanf("%c",&b)立即返回, b='\n',(不等待你输入!) 然后阻塞在 scanf("%c",&c), 若输入2, 函数返回, c='2'. 结果: 只能显示: 1\n2, '\n'是换行, 所以你只能看到: 1 2
js001sdx 于 2009-08-07 16:31:20发表:
{:3_108:}看不懂,帮忙顶
lyq617617 于 2008-07-09 10:07:39发表:
索性就这么写 scanf("%c%c%c",&a,&b,&c); 输入字符时用空格空开. 你的程序没有什么问题,应该是你输入时有误!
whans 于 2008-07-04 12:16:03发表:
$./executefilename //在终端中输入可执行文件名 abc //输入三个字符 abc$ //运行结果 估计你是输入一个字符后就来个回车。
gllw915 于 2010-10-29 16:45:06发表:
太精髓了
Linux-MJ 于 2009-08-07 19:43:25发表:
[i=s] 本帖最后由 Linux-MJ 于 2009-8-7 19:44 编辑 [/i]
LZ, 是你没有理解scanf函数对缓冲区的处理, 该函数会将输入缓冲区的字符取走并赋给你的变量.
假如执行你的程序时:
scanf("%c",&a);
scanf("%c",&b);
scanf("%c",&c);
当我输入1并回车后,缓冲区里有两个字符:'1'和'\n', scanf("%c",&a)返回, 此时a='1', 缓冲区里还有'\n'!!!
然后 scanf("%c",&b)立即返回, b='\n',(不等待你输入!)
然后阻塞在 scanf("%c",&c), 若输入2, 函数返回, c='2'.
结果: 只能显示: 1\n2, '\n'是换行,
所以你只能看到: 1
2
js001sdx 于 2009-08-07 16:31:20发表:
{:3_108:}看不懂,帮忙顶
lyq617617 于 2008-07-09 10:07:39发表:
索性就这么写
scanf("%c%c%c",&a,&b,&c);
输入字符时用空格空开.
你的程序没有什么问题,应该是你输入时有误!
whans 于 2008-07-04 12:16:03发表:
$./executefilename //在终端中输入可执行文件名
abc //输入三个字符
abc$ //运行结果
估计你是输入一个字符后就来个回车。