问题描述
- 关于scanf()的输入输出问题
-
#include
main(){
int ir;uur:
printf("333n");
getch();
scanf("d%",&ir);printf("t=%dn",ir);
printf("t=%dn",&ir);
getch();
goto uur;}
不好意思,,我这段代码有点bug,但是自己看不出来。
1. 我用scanf 输入 的 和 输出的有差异。。例如,,我输入 333333,但 printf出来的不是3333332。我设置了 goto。。。但 goto uur后,系统 直接跳过 scanf,直接运行下面的 printf(“t=%d”,??),为啥这么奇怪?是我电脑问题吗?你们运行有没有出现相同的情况?
。。
解决方案
scanf("d%",&ir); 应该是 scanf("%d",&ir); 吧?
解决方案二:
#include
main(){
int ir=0;
uur:
/*getch();*/
printf("333n");
/*getch();*/
scanf("%d",&ir);
clear_kb();
printf("t=%dn",ir);
printf("t=%dn",&ir);
getch();
/*getch();*/
/*goto uur;*/}
clear_kb(void)
{
char junk[4096];
/* gets(junk);*/
}
我改了正确的格式,但是不行。。
解决方案三:
是 scanf("%d",&ir); 但是你想实现啥? 你这个程序一直在循环。。。
解决方案四:
你运行的时候这些注释是打开的还是注释的。按照你的说法,goto已经注释了,没有运行。
clear_kb定义在后面,这代码根本也通过不了编译。你说输入的不对,你输入什么,输出什么。
问题要说清楚。
解决方案五:
你这个程序一直在循环啊,
解决方案六:
代码需要与键盘的输入动作配合。如果没有获得预期的输入,可能是程序写错了,还有可能是输入的动作错了,也可能两者都错了。
解决方案七:
c语言我觉得最好不要用 goto循环,这是无条件的跳转。容易造成程序错乱
pirntf(“t=%dn”,&ir)这样是要输出ir的十进制地址。你可以再声明一个指针,指向i;测试一下你程序的输出是否一样。
int *p = &ir;
再输入出一次printf("t=%dn",p);
看看两个输出是否一样
解决方案八:
scanf("d%",&ir); 改成 scanf("%d",&ir);
你的getch();是为了什么