关于scanf()的输入输出问题

#include
main(){
int ir;

uur:
printf("333\n");
getch();
scanf("d%",&ir);

printf("t=%d\n",ir);
printf("t=%d\n",&ir);
getch();
goto uur;}
不好意思,,我这段代码有点bug,但是自己看不出来。
1. 我用scanf 输入 的 和 输出的有差异。。例如,,我输入 333333,但 printf出来的不是333333

2。我设置了 goto。。。但 goto uur后,系统 直接跳过 scanf,直接运行下面的 printf(“t=%d”,??),为啥这么奇怪?是我电脑问题吗?你们运行有没有出现相同的情况?
。。

是 scanf("%d",&ir); 但是你想实现啥? 你这个程序一直在循环。。。

scanf("d%",&ir); 应该是 scanf("%d",&ir); 吧?

#include
main(){
int ir=0;
uur:
/*getch();*/
printf("333\n");
/*getch();*/
scanf("%d",&ir);
clear_kb();
printf("t=%d\n",ir);
printf("t=%d\n",&ir);
getch();
/*getch();*/
/*goto uur;*/}
clear_kb(void)
{
char junk[4096];
/* gets(junk);*/
}

我改了正确的格式,但是不行。。

你运行的时候这些注释是打开的还是注释的。按照你的说法,goto已经注释了,没有运行。
clear_kb定义在后面,这代码根本也通过不了编译。你说输入的不对,你输入什么,输出什么。
问题要说清楚。

你这个程序一直在循环啊,

代码需要与键盘的输入动作配合。如果没有获得预期的输入,可能是程序写错了,还有可能是输入的动作错了,也可能两者都错了。

c语言我觉得最好不要用 goto循环,这是无条件的跳转。容易造成程序错乱
pirntf(“t=%d\n”,&ir)这样是要输出ir的十进制地址。你可以再声明一个指针,指向i;测试一下你程序的输出是否一样。
int *p = &ir;
再输入出一次printf("t=%d\n",p);
看看两个输出是否一样

scanf("d%",&ir); 改成 scanf("%d",&ir);
你的getch();是为了什么

各位,谢谢回答。
我很久没上csdn了,后来我研究了一下,发现好像是输入时候有残留的回车在里头。。导致后面的getch接受了回车后直接就跳过了。。具体我也没弄清楚