ResoulㄨEvermat 发表于 2015-3-1 14:04:45

求助求助!有没有大神可以给我讲解下scanf输入printf输出后的值不一样

如题:
一直想不到自己居然会出这种小问题
#include<stdio.h>
void main()
{
        int i;
        char a;
        for(i=1;i<5;i++)
        {
                scanf("%d\n",&a);
                printf("%d\n\n",a);
}        }
以上代码通过数组动态赋值,可以我打印输出的却不一样;
a输入0 ,打印不出来;
a输入1 ,打印出0;
a输入2, 打印出1;

而用getchar根本打印不出正确值,这两问题完全不知道是怎么回事?
#include<stdio.h>
void main()
{
        int i;
        char a;
        for(i=1;i<5;i++)
        {
                getchar("%d\n",a);
                printf("%d\n\n",a);
}        }

ResoulㄨEvermat 发表于 2015-3-1 14:07:49

好无奈的输出

lililice 发表于 2015-3-1 14:15:13

#include<stdio.h>
void main()
{
      int i;
      int a;
      for(i=0; i<5; i++)
      {
                scanf("%d\n",&a);
                printf("%d\n\n",a);
      }
}
如果scanf的参数里是%d,那后边的参数需要是int的,%c才是char,
printf同理.

ResoulㄨEvermat 发表于 2015-3-1 14:27:05

lililice 发表于 2015-3-1 14:15
如果scanf的参数里是%d,那后边的参数需要是int的,%c才是char,
printf同理.
char a换成int a;
还是上面同样的问题,都是打印出的 前一个a赋值;

lililice 发表于 2015-3-1 14:29:07

scanf("%d\n",&a);
换成
scanf("%d",&a);
试试,
scanf里的\n去掉

ResoulㄨEvermat 发表于 2015-3-1 14:30:33

刚刚忘了改成int a;
不过int对应%d 但输出的还是前一个a的赋值;

ResoulㄨEvermat 发表于 2015-3-1 14:35:21

lililice 发表于 2015-3-1 14:29
scanf("%d\n",&a);
换成
scanf("%d",&a);


我去......真的好了,好神奇,大概懂了,失误啊。哎......谢啦{:5_91:}

ResoulㄨEvermat 发表于 2015-3-1 14:36:50

好了解决了,小问题耽搁了这么长时间,没想到被一个\n 。。。。。。。谢谢 @lililice

lililice 发表于 2015-3-1 14:41:39

ResoulㄨEvermat 发表于 2015-3-1 14:36
好了解决了,小问题耽搁了这么长时间,没想到被一个\n 。。。。。。。谢谢 @lililice

客气
页: [1]
查看完整版本: 求助求助!有没有大神可以给我讲解下scanf输入printf输出后的值不一样