none
一段C语言代码的疑问 RRS feed

  • 问题

  • #include <stdio.h>
    void main ()
    {
     char c='a';
     while (c == 'a')
     {
      printf ("1\n");
      scanf ("%c", &c);
     }
     printf ("0\n");
    }
    上述C代码在Visual Studio 2005上编译、组建均无错误或警告,但是执行时并没有达到预期的目的。
    执行结果显示为:
    1
    a
    1
    0
    就结束了,并没有在输入“a”时while没有进行再一次循环,就直接跳出了,但是将scanf语句改成 scanf ("%d, &c); ,并在输入时输入“97”就能反复进行while循环,即达到目的。
    请问有哪位高手能够解释一下为什么?不甚感激!

    2009年7月28日 4:30

答案

  • 这是因为你在输入a的时候计算机自动进行了换行.
    计算机收到的真正输入是'a'和0x10('\n').
    所以第二轮的循环c就成了0x10,不符合条件直接跳出了.

    解决方法是不要用%c而用%s代替。c最好也分配成字符串。


    0xBAADF00D
    • 已标记为答案 梦天 2009年7月28日 16:07
    2009年7月28日 5:38
    版主