c语言-关于scanf()的输入输出问题

问题描述

关于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出来的不是333333

2。我设置了 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();是为了什么

时间: 2024-10-22 01:16:22

c语言-关于scanf()的输入输出问题的相关文章

字符串-[c语言]关于 scanf() 和 char数组 的小实验的问题

问题描述 [c语言]关于 scanf() 和 char数组 的小实验的问题 写了三个小的几乎一样的test代码,但是输出却不同,不明白为什么,求大神指点.全部代码如下:#include void sub1(void); int main(){ /*test1*/ sub1(); /*test2 */char w0[2]={'a''a'}; char * pc0 = w0; printf("" w1 = %s""w0); /*wrong*/printf("&

c语言关于scanf("%*s")

问题描述 c语言关于scanf("%*s") 我只想scanf(""%*s"")该语句起清除作用,并不想在运行时,额外要多输入字符,请问如何解决呢? #include void rt ( char ch int x int y); //声明调用函数int main (void){ int i j status; char ch; printf (""请输入一个字符:n"");scanf ("&qu

c语言的scanf在按下“Enter”键后到底发生了什么事情??

问题描述 c语言的scanf在按下"Enter"键后到底发生了什么事情?? 我有几个问题: 上面的解释是输入71.82后按下回车,回车被c1当作字符吸收了,c2吸收了'A';但是上面输入完b=7后,不是按下了回车键吗,最终输入了71.82按下回车后,键盘缓存中不是存留着两个回车吗?为什么c2不是吸收到回车?? scanf在按下"Enter"键后到底发生了什么事情? 解决方案 执行scanf()函数时,在键盘输入回车会把之前的输入连同回车符一起送入缓存区,然后通过格式

c语言-C语言用scanf清理输入缓存的一个程序

问题描述 C语言用scanf清理输入缓存的一个程序 源程序如下:#includeint main(){ int num; printf(""输入数字:""); scanf(""%d""&num); printf(""输入了数字:%dn""num); printf(""是否继续测试:[Y/N]"");scanf(""%*[

C语言中字符的输入输出以及计算字符个数的方法详解_C 语言

C语言字符输入与输出 标准库提供的输入/输出模型非常简单.无论文本从何处输入,输出到何处,其输入/输出都是按照字符流的方式处理.文本流是由多行字符构成的字符序列,而每行字符则由 0 个或多个字符组成,行末是一个换行符.标准库负责使每个输入/输出流都能够遵守这一模型.使用标准库的 C 语言程序员不必关心在程序之外这些行是如何表示的. 标准库提供了一次读/写一个字符的函数,其中最简单的是 getchar 和 putchar 两个函数.每次调用时,getchar 函数从文本流中读入下一个输入字符,并将

c语言-关于scanf输入数组单个数值的问题

问题描述 关于scanf输入数组单个数值的问题 我最近在学习scanf的具体使用.然后遇到了一个问题就是,当我只想给数组的一个元素输入scanf输入的值的时候,无法输入,也无法显示. 程序是这样的: #include #include void main() { char a; char b[10]; char c[10]; char *p; p=b; printf("a="); scanf("%c",&a); printf("b=");

c语言-为什么scanf那条于句老是被跳过去

问题描述 为什么scanf那条于句老是被跳过去 大神,怎么办?性别还没输呢,它就叫我输名次了? 解决方案 %s 以空白符号结束输入,如回车,空格等,但空白符号仍留在stdin缓冲区中, %s输入名字语句后加getchar()或者语句后面用清空stdin缓冲区fflush(stdin): 解决方案二: 性别用%s,不要用%c 解决方案三: 将性别定义成 int 类型,然后修改 scanf 的实现看看是否有改善 解决方案四: 上一行%sn 记得可以 解决方案五: 我猜是 回车 /r /n 有两个字符

c语言-while(scanf("%d ",&a)!=EOF&&n)与while(scanf("%d",&a)!=EOF&&n)的区别

问题描述 while(scanf("%d ",&a)!=EOF&&n)与while(scanf("%d",&a)!=EOF&&n)的区别 while(scanf("%d ",&a)!=EOF&&n)为何多了个 ,这个判断n是否为0就用不上了?还是我完全弄错了?还有EOF有没有一个简单点的解释? 解决方案 EOF是个宏,大概就是#define EOF (-1)类似的玩意scan

c语言-if(scanf("%d", array + i) != 1)运行到这句,程序停止,联机检查是怎么回事??

问题描述 if(scanf("%d", array + i) != 1)运行到这句,程序停止,联机检查是怎么回事?? /* **读取.排序和打印一列整型值. */ #include #include /* **该函数由'qsort'调用,用于比较整型值 . */ int compare_integers( void const *a, void const *b ) { register int const *pa = a; register int const *pb = b; re