社区
C语言
帖子详情
关于scanf输入char型数据问题
wcl1986_1
2007-08-14 04:27:53
char a,b,c;
scanf("%c,%c,c",a,b,c);
printf("a=%c,b=%c,c=%c",a,b,c);
为什么输入:空格a,空格b,空格c回车
输出:a=空格,b=?,c=﹃(类似于7这么个东西)
...全文
3013
29
打赏
收藏
关于scanf输入char型数据问题
char a,b,c; scanf("%c,%c,c",a,b,c); printf("a=%c,b=%c,c=%c",a,b,c); 为什么输入:空格a,空格b,空格c回车 输出:a=空格,b=?,c=﹃(类似于7这么个东西)
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
29 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wcl1986_1
2007-08-18
打赏
举报
回复
thangk you for all
Robert_xy
2007-08-18
打赏
举报
回复
Robert_xy()
我还是想不明白“scanf()在接受a=" "后由于空格后的a使得b,c无法取得正确的值”这句话
==================================================================================
当你输入的是“空格a,空格b,空格c 回车”时,scanf()在接受a=" "后,接下来本应该是分隔符',',但是'空格'后是字符'a',输入格式错误,因此结果无法预料,也就是说是乱码。
gqhonesty
2007-08-18
打赏
举报
回复
都说完了,JF!
wcl1986_1
2007-08-18
打赏
举报
回复
Robert_xy()
我还是想不明白“scanf()在接受a=" "后由于空格后的a使得b,c无法取得正确的值”这句话
waitwinter
2007-08-16
打赏
举报
回复
输入形式根本就没弄对scanf("%c,%c,%c",a,b,c);必须对应输入x,x,x必须用逗号连接,空格和回车都不行,修改成scanf("%c %c %c",a,b,c);就是你想要的了。。。
Robert_xy
2007-08-16
打赏
举报
回复
楼主可能误解了我的意思:
当你输入的是“空格a,空格b,空格c 回车”时,scanf()在接受a=" "后由于空格后的a使得b,c无法取得正确的值,因此形成乱码,若你试试“空格,空格b,空格c 回车”,则输出的就是“a=空格,b=空格,c为乱码”,这样解释楼主再想想。
wcl1986_1
2007-08-16
打赏
举报
回复
楼上说的很好。
楼主在输入"空格a,空格b,空格c"时是不对的,因为在c语言中’空格‘也是一个字符,这样输入的结果是“a=空格,b,c均为乱码”,你再试试输入“空格,b,空格 回车”则输出的结果分别是“a= ,b=b,c= ”和“a=32,b=98,c=32”。
=================
Robert_xy() 说“a=空格,b,c均为乱码“,是为什么(结果正如你说的)?我认为scanf()在接受a=" "后应寻找",",在逗号后接受下一个字符啊。。。
Robert_xy
2007-08-15
打赏
举报
回复
在字符的输入,执行"scanf("%c",c)"时,字符从键盘读取时,遇到空格或回车键为止,同时系统会自动在接受带的字符后面加一个'\0',即输入时字符不能包含空格字符.你试试"回车"就明白了,例如'回车,b,c'.
--------------------------------
这个在输入字符串的时候更为明显,但是在这不一样。a,b,c确实是得到了一个空格,空格的ASICC码
是32,所以当输出printf ("%d %d %d\n", a, b, c)都为32时就说明a b c为空格。
=============================================================================
楼上说的很好。
楼主在输入"空格a,空格b,空格c"时是不对的,因为在c语言中’空格‘也是一个字符,这样输入的结果是“a=空格,b,c均为乱码”,你再试试输入“空格,b,空格 回车”则输出的结果分别是“a= ,b=b,c= ”和“a=32,b=98,c=32”。
dagdyai
2007-08-15
打赏
举报
回复
写得很不错,值得学习
comman_ndsc
2007-08-15
打赏
举报
回复
在字符的输入,执行"scanf("%c",c)"时,字符从键盘读取时,遇到空格或回车键为止,同时系统会自动在接受带的字符后面加一个'\0',即输入时字符不能包含空格字符.你试试"回车"就明白了,例如'回车,b,c'.
--------------------------------
这个在输入字符串的时候更为明显,但是在这不一样。a,b,c确实是得到了一个空格,空格的ASICC码
是32,所以当输出printf ("%d %d %d\n", a, b, c)都为32时就说明a b c为空格。
scribbler
2007-08-15
打赏
举报
回复
Robert_xy() 说得很清楚
comman_ndsc
2007-08-14
打赏
举报
回复
输入: , ,
输出:a= ,b= ,c= a=32,b=32,c=32
wcl1986_1
2007-08-14
打赏
举报
回复
确定 你们可以试试我在8楼重发的程序
input 和 output 我截不下来-_-呵呵不会截
Robert_xy
2007-08-14
打赏
举报
回复
在字符的输入,执行"scanf("%c",c)"时,字符从键盘读取时,遇到空格或回车键为止,同时系统会自动在接受带的字符后面加一个'\0',即输入时字符不能包含空格字符.你试试"回车"就明白了,例如'回车,b,c'.
yangqi227
2007-08-14
打赏
举报
回复
正确输入为
a,b,c加回车
lockhall
2007-08-14
打赏
举报
回复
空格a,空格b,空格c回车
其实没有解决
当第一个输入字符是空格时,a接受空格,这个明白。当b c接受时,为什么不接受逗号后的空格,除非scanf函数不以逗号为结束一个 字符的标志。
你确定你的b c没有接受空格么?
你贴个你的input: output:
wcl1986_1
2007-08-14
打赏
举报
回复
空格a,空格b,空格c回车
其实没有解决
当第一个输入字符是空格时,a接受空格,这个明白。当b c接受时,为什么不接受逗号后的空格,除非scanf函数不以逗号为结束一个 字符的标志。
comman_ndsc
2007-08-14
打赏
举报
回复
问题解决了,楼主不要忘了揭贴
tiedingyan
2007-08-14
打赏
举报
回复
scanf("%c,%c,%c",a,b,c);不对吧,应该改成:scanf(“%c,%c,%c”,&a,&b,&c);
comman_ndsc
2007-08-14
打赏
举报
回复
输入一次空格还要输入一个逗号啊(除了第三次输入),你看你的scanf 语句是怎么定义的scanf("%c,%c,%c",&a,&b,&c);
如果你不想麻烦,那就这样改scanf("%c %c %c",&a,&b,&c);这就是你想要的。
加载更多回复(9)
scanf
输入
char
型
数据
时被回车或空格占用
scanf
函数和gets()函数在使用时一定要慎重。...当
输入
第一个字符a的时候,后面的空格就会自动进入第二个
scanf
函数中,这个时候就需要进行缓冲区刷新` #include<stdio.h> int main() {
char
n,m;
scanf
("%
使用
scanf
输入
int或
char
数据
使用
scanf
输入
数据
scanf
(“%c”,&c); //
输入
100,实际只读了字符 ”1“ Printf(“%c\n”,c); //输出”1“ printf(“%d\n”,c); //输出49.字符T的ASCII值就是 49 说明:
char
类
型
的变量,它储存的是:字符对应...
关于
Scanf
中
输入
char
类
型
被略过的
问题
主要原因是在前面的
scanf
输入
之后,空格、回车会存入缓存区中,其他类
型
的
数据
不会去读取你在前面
输入
的空格和回车,但是
char
类
型
会去读取,因此这个
scanf
语句会有直接略过的效果。 如果需要验证一下,我们可以用...
关于
scanf
()读取
char
类
型
的
问题
。
今天做算法题的时候,写了一句
scanf
("%c",&order);,结果
输入
部分一直过不了。
scanf
()读取
输入
后的回车会一直留在缓冲区,被下一个
scanf
()读入。改成
scanf
("\n%c",&order);
C语言
70,021
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章