首页 > 用户发贴区 > 编程问题提问区 > 打印乱码问题
2009
06-29

这个是C程序设计语言 书上的课后习题。
题目:
编写一个程序,以每行一个单词的形式打印其输入。

[CODE]
    1 #include <stdio.h>
      2
      3 #define IN 1
      4 #define OUT 0
      5
      6 main(){
      7
      8 int c, state;
      9
     10 state = OUT;
     11 while((c == getchar()) != EOF ){
     12      if (c == ‘ ‘ || c == ‘\n’ || c == ‘\t’){
     13          if (state == IN){
     14          putchar(‘\n’);
     15          state = OUT;
     16          }
     17      } else if (state == OUT){
     18        state = IN;
     19        putchar(c);
     20
     21      } else
     22        putchar(c);
     23   }
     24
     25 }

[/CODE]

[CODE]
amro@home:~/doc/c$ ./1.1.3_7.out
rk
???3
??4
??5
??

[/CODE]

程序运行之后,输出的时候变成了乱码,不知道是为什么阿。谁知道说一下贝,谢谢。

程序在vim下编写,语言编码环境utf8。


打印乱码问题》有 3 条评论

  1. Freeze 说:

    #include <stdio.h>
    #define IN 1
    #define OUT 0
    main()
    {
     int state;
     char c;
        state = OUT;
        while((c == getchar()) != EOF)
     {
          if (c == ‘ ‘ || c == ‘\n’ || c == ‘\t’)
       {
                if (state == IN)
       {
                   putchar(‘\n’);
                   state = OUT;
       }
             else if (state == OUT)
       {
        state = IN;
        putchar(c);
     
       }
       else
        putchar(c);
      }
     }
    }
         

  2. amro 说:

    谢谢,你的程序待会试一下,我到学校在centos上重新编写了一

    次没有乱码了,暂时没用到“char c;”。再次感谢。 [:)]

  3. amro 说:

    [CODE]

    1 #include <stdio.h>

    2

    3 #define OUT 0

    4 #define IN 1

    5

    6

    7 main(){

    8

    9 int c, state;

    10

    11 state = OUT;

    12

    13 while((c = getchar()) != EOF){

    14   if (c == ‘ ‘||c == ‘\n’|| c == ‘\t’){     

    15     if (state == IN){

    16     putchar(‘\n’);

    17     state = OUT;

    18     }

    19   }else if (state == OUT){           

    20     state = IN;

    21     putchar(c);

    22     }

    23   else

    24     putchar(c);

    25

    26   }

    27

    28 }

    [/CODE]

    下面是在centos下的vim完成的,已经没有乱码了。

    另外,谢谢Freeze的帮助。 [:)]

留下一个回复