社区
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);
}
...全文
152
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();
两个
scanf
语句
连用时会出现的问题解决
PS:新手上路,第一次接触C语言遇到的问题,请多指教 这个问题呢,是寂寞在敲自己的第几个程序时遇到的呢,问题是在一个程序中同时使用两个
scanf
语句
时,遇到只能输入第一个
scanf
语句
所能够读取到的值,而第二个
scanf
语句
则是被直接忽略了,进而出现执行结果的问题。 #include<stdio.h> int main() { char tempType; float tem...
scanf
语句
的使用和执行原理
这说明
scanf
语句
读取完数字后,会把后面的空格也读取掉。如果后面有变量来接收,读取后就会把空格赋值给对应的变量,如果
没有
变量来接收,那么仅仅是读取,不会进行赋值操作。值得注意的是,
scanf
只有在读取完数字后会继续把后面的空格读取掉
printf与
scanf
语句
讲解
printf()作用是把双引号里面参数打印出来上代码看这就是上面的打印结果
scanf
()这个
语句
输出后自动换行(这里咱们先知道一下,下面会讲)printf()不会输出后在屏幕中换行,如果我们想要换行可以在末尾加\n(换行符)看下面打印结果画横线的地方就换行了上面代码写的作用可以把hello打印成一行,world打印一行,要用到printf()
语句
,我们要在上面加上#include,因为printf()
语句
是标准库的头文件stdio.h定义的,调用函数就要用到头文件。
Clion编写C语言代码时
scanf
输入
语句
之前printf
语句
显示在
scanf
语句
后的解决方案
clion处理
scanf
输入
语句
时的报错
scanf
读取规则理解&回车无法
结束
说到
scanf
,为了让
scanf
正确读取输入流数据,最后都得一个回车。然而今天不小心发现一个有趣的现象。导致最后无论按几个回车,输入流数据都无法被
scanf
读取。 ...
C语言
70,037
社区成员
243,243
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章