关于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这么个东西)
[解决办法]
问题解决了,楼主不要忘了揭贴
[解决办法]
空格a,空格b,空格c回车
其实没有解决
当第一个输入字符是空格时,a接受空格,这个明白。当b c接受时,为什么不接受逗号后的空格,除非scanf函数不以逗号为结束一个 字符的标志。
你确定你的b c没有接受空格么?
你贴个你的input: output:
[解决办法]
正确输入为
a,b,c加回车
[解决办法]
在字符的输入,执行"scanf( "%c ",c)"时,字符从键盘读取时,遇到空格或回车键为止,同时系统会自动在接受带的字符后面加一个'\0',即输入时字符不能包含空格字符.你试试"回车"就明白了,例如'回车,b,c '.
[解决办法]
输入: , ,
输出:a= ,b= ,c= a=32,b=32,c=32
[解决办法]
在字符的输入,执行"scanf( "%c ",c)"时,字符从键盘读取时,遇到空格或回车键为止,同时系统会自动在接受带的字符后面加一个'\0',即输入时字符不能包含空格字符.你试试"回车"就明白了,例如'回车,b,c '.
--------------------------------
这个在输入字符串的时候更为明显,但是在这不一样。a,b,c确实是得到了一个空格,空格的ASICC码
是32,所以当输出printf ( "%d %d %d\n ", a, b, c)都为32时就说明a b c为空格。
[解决办法]
Robert_xy()
我还是想不明白“scanf()在接受a= " "后由于空格后的a使得b,c无法取得正确的值”这句话
==================================================================================
当你输入的是“空格a,空格b,空格c 回车”时,scanf()在接受a= " "后,接下来本应该是分隔符 ', ',但是 '空格 '后是字符 'a ',输入格式错误,因此结果无法预料,也就是说是乱码。