Char中的字符打印

时间:2015-11-21 18:50:56

标签: c

我正在尝试修改一些Ritchie和Kernighan的代码,但这个代码似乎没有返回预期:

字符1 人物2 角色3

...而是有些奇怪:

字符1    2 人物3    4

#include <stdio.h>

main()
{

    char cadena[10], cadinver[10], c;
    int lim,i;
    lim=10;
    i=0;

    for (i=0;(i<lim) && ((c=getchar())!=EOF);++i){
        cadena[i]=c;
        printf("%c %d",c,i);
    }
    printf("%s",cadena);
    system("pause");
    return 0;

}

我认为错误很简单,但我没有做到......

非常感谢! :)

2 个答案:

答案 0 :(得分:2)

这有点棘手,但这就是我认为正在发生的事情。 当你用键盘2写字,然后按回车键,你是什么 实际上“给”你的程序是'2''\ n',这是2个字符。所以 你的第一个getchar()得到数字2而另一个获得'\ n' 字符。

尝试像这样修改你的for循环体:

 cadena[i]=c; 
 printf("%c %d",c,i);
 getchar();

答案 1 :(得分:1)

我没有c的环境,但是:

  1. 添加&#39; \ 0&#39;在最后一次访问cadena。所以在之后,请执行cadena [i] =&#39; \ 0&#39;;
  2. 你有一个包含10个元素的数组。但在char *中,你应该考虑到&#39; \ 0&#39;。所以lim应该是9(而不是10)
  3. 使用&#39; \ n&#39;在你的printf结束时。也许有帮助。
  4. 我不明白你使用系统的原因(&#34;暂停&#34;)
  5. 祝你好运

    确定 - 已更正