社区
C语言
帖子详情
真奇怪, 第四个scanf语句还没有执行程序就结束了
lettermail5
2003-09-04 05:06:56
真奇怪, 第四个scanf语句还没有执行程序就结束了
#include <stdio.h>
main()
{
int a,eee;
char b,d;
scanf("%c",&b);
scanf("%d",&a);
scanf("%c",&d);
scanf("%d",&eee);
}
...全文
137
16
打赏
收藏
真奇怪, 第四个scanf语句还没有执行程序就结束了
真奇怪, 第四个scanf语句还没有执行程序就结束了 #include main() { int a,eee; char b,d; scanf("%c",&b); scanf("%d",&a); scanf("%c",&d); scanf("%d",&eee); }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chinajiji
2003-09-04
打赏
举报
回复
如果连续输入两个以上的十进制数,用空格分隔之.
如果连续输入两个以上的字符,不能用空格分隔,否则,空格将做为一个输入字符输入.
如果输入十制数与一个字符,不能用空格分隔之,否则,空格将做为一个输入字符输入.
如果输入一个字符与一个十进制数,字符与十进制数之间可加空格也可不加空格.
scanf(...)如果输入成功,返回输入成功并保存了的数据个数,如果输入不成功,比如将一个字符做为一个十进制数据输入,则返回0,并且这个字符将仍然保留在输入缓存中,可能做为下一个输入数据被读入.
#include <stdio.h>
#include <stdlib.h>
main()
{
int a = 999;
int eee =1000 ;
char b = 'a';
char d = 'b';
char e = 'e';
int sa = 555;
int seee = 666;
int sb = 777;
int sd = 888;
int se = 999;
sa = scanf("%c",&b);
printf("c = %c, ",b);
printf("sa = %d\n", sa);
sb = scanf("%d",&a);
printf("a = %d, ",a);
printf("sb = %d\n", sb);
sd = scanf("%c",&d);
printf("d = %c, ",d);
printf("sd = %d\n", sd);
seee = scanf("%d ",&eee);
printf("eee = %d, ",eee);
printf("seee = %d\n", seee);
se = scanf("%c", &e);
printf("e = %c,", e);
printf("se = %d\n", se);
system("pause");
}
A 10 B 11 //输入数据与格式.
c = A, sa = 1
a = 10, sb = 1
d = , sd = 1
eee = 1000, seee = 0
e = B,se = 1
请按任意键继续 . . .
A 10B11C //输入数据格式.
c = A, sa = 1
a = 10, sb = 1
d = B, sd = 1
eee = 11, seee = 1
e = C,se = 1
请按任意键继续 . . .
A10B11C
c = A, sa = 1
a = 10, sb = 1
d = B, sd = 1
eee = 11, seee = 1
e = C,se = 1
请按任意键继续 . . .
CreaTive1911
2003-09-04
打赏
举报
回复
大致错误引起的原因是因为scanf是从缓冲区读数据的,也许是因为第三个scanf语句结束后,缓冲区还有残余数据,你可以在第四个scanf语句后加个printf打印eee,看eee到底是什么
CreaTive1911
2003-09-04
打赏
举报
回复
我也碰见过类似的问题,不过后来是怎么修改好的自己也忘记了,hehe
liuyuw
2003-09-04
打赏
举报
回复
两下回车会自动退出
lth_81
2003-09-04
打赏
举报
回复
你一定是敲了回车。。最后一个scanf接受的是回车。
myyan
2003-09-04
打赏
举报
回复
加上空格后,会忽略字符前面的空格等。
myyan
2003-09-04
打赏
举报
回复
例如:
char b,d;
scanf(" %c",&b);
scanf(" %d",&a);
scanf(" %c",&d);
scanf(" %d",&eee);
因为,你输入的时候,会把你敲的回车算进去。
myyan
2003-09-04
打赏
举报
回复
输入的时候在%和前面的“之间加上空格.OK!!!!!!!
lettermail5
2003-09-04
打赏
举报
回复
多谢楼上指点
我分开写有罪吗?
问题总是搞得清楚点好吧
tonybaobao
2003-09-04
打赏
举报
回复
你写一起呀
scanf("%d %d %d %c",&a,&b,&c,&d);
lettermail5
2003-09-04
打赏
举报
回复
各位大侠, 看来不是这样的原因
上面的方法都试过
若按二楼的方法, 表面上输入没有错, 因为刚才的语句没有输出语句, 所以看不到错误, 当我加上输出语句后, 实质是二楼的方法也是错误的。
大家请不啬指教啊
#include <stdio.h>
main()
{
int a,eee;
char b,d;
scanf("%c",&b);
scanf("%d",&a);
scanf("%c",&d);
scanf("%d ",&eee);
printf("%c",b);
printf("%d",a);
printf("%c",d);
printf("%d",eee);
}
bigbigbigsoft
2003-09-04
打赏
举报
回复
最后一个改成:scanf("%d ",&eee);后面增加空格
rtdb
2003-09-04
打赏
举报
回复
你这样输入:
a 2 b 3
不要输入一个数后就输入回车,
否则回车会被当字符读进去。
gdjxlhc
2003-09-04
打赏
举报
回复
依我理解,该程序都执行啦,只是上面的scanf语句在执行时要求用户输入数并回车结束一个录入,但回车符给当作另一个录入数传到第二个scanf中去,你试试在每个scanf后加入
getch();来接收回车符。。。。
rtdb
2003-09-04
打赏
举报
回复
你这样输入:
a 2 b 3
不要输入一个数后就输入回车,
否则回车会被当字符读进去。
xiachuankai
2003-09-04
打赏
举报
回复
可能因为你的第一个数输入以后,敲入了回车键。然后第二个输入语句就接收了这个回车,就结束了。你用空格试试。或者用一个语句吃掉缓冲区的回车键。好象是 ignore();
C语言系列课程
序号 内容 详情内容 第1讲 关于《C语言》 主要阐述为什么录制这个系列的视频 第2讲 C语言基础知识 C语言特征、C语言字符集、词汇 第3讲 C语言输入/输出
scanf
、printf、getchar、putchar 第4讲 C语言数据类型 数据...
两个
scanf
语句
连用时会出现的问题解决
这个问题呢,是寂寞在敲自己的第几个程序时遇到的呢,问题是在一个程序中同时使用两个
scanf
语句
时,遇到只能输入第一个
scanf
语句
所能够读取到的值,而第二个
scanf
语句
则是被直接忽略了,进而出现执行结果的问题。...
scanf
语句
的使用和执行原理
这说明
scanf
语句
读取完数字后,会把后面的空格也读取掉。如果后面有变量来接收,读取后就会把空格赋值给对应的变量,如果
没有
变量来接收,那么仅仅是读取,不会进行赋值操作。值得注意的是,
scanf
只有在读取完数字后...
printf与
scanf
语句
讲解
printf()作用是把双引号里面参数打印出来上代码看这就是上面的打印结果
scanf
()这个
语句
输出后自动换行(这里咱们先知道一下,下面会讲)printf()不会输出后在屏幕中换行,如果我们想要换行可以在末尾加\n(换行符...
scanf
读取规则理解&回车无法
结束
说到
scanf
,为了让
scanf
正确读取输入流数据,最后都得一个回车。然而今天不小心发现一个有趣的现象。导致最后无论按几个回车,输入流数据都无法被
scanf
读取。 ...
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章