社区
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这么个东西)
...全文
3111
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写文章
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)
工作中
问题
整理1----使用
scanf
出现的奇怪内存越界
问题
今天帮同事处理一个
问题
,发现原来是内存越界
问题
:
问题
描述: 使用
scanf
输入
int
型
的
数据
赋值给了
char
类
型
的字符变量 #include #include #include #include #includetypedef struct { unsigned
char
chn; unsigned
char
flag; } CTRL_DATA;
scanf
/
scanf
_s格式字符串使用正则表达式读取字符时内存越界
问题
当
scanf
中使用格式化字符串读取
输入
时,实际上读入的是一个字符串。 所以如下代码
char
ch;
scanf
("%[+*/-]", &ch); 如果
输入
’+’,则
scanf
实际读取到的是字符串”+\0",所以此时在&c处存储‘+’,在&c+1处存储‘\0’,但
scanf
仍然会返回1(c读取到了’+’),显然发生了越界现象,这个现象在程序结束后释放变量时报错,提示栈...
关于使用
scanf
类
型
匹配的
问题
上面例子实际给的是
char
型
变量,那么每个ServerIP将会按照ServerIP及其后面3个字节组成的int赋值。原因:对
scanf
使用%d
输入
时,会认为后面给的参数未int
型
,将会按照int
型
对其地址赋值。使用
scanf
输入
ip(字符串)转4字节数字。将会导致ServerPort前面3字节清零。
数据
结构基础-PTA-简单计算器
简单计算器 深入对
scanf
的理解 拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。
输入
格式:
输入
在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明
输入
结束。 输出格式: 在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。 挺简单的一道题目,但是花了挺长时间,原因就是对
scanf
的理解不到位,导致在操作符与操作数的分割上花了较多时间.
scanf
有以下几个注
使用
scanf
输入
int或
char
数据
使用
scanf
输入
数据
scanf
(“%c”,&c); //
输入
100,实际只读了字符 ”1“ Printf(“%c\n”,c); //输出”1“ printf(“%d\n”,c); //输出49.字符T的ASCII值就是 49 说明:
char
类
型
的变量,它储存的是:字符对应的ASCII码值。 Int 变量的
输入
int a: seanf(“%d”,&a); //
输入
10...
C语言
70,039
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章