基础性的问题,希望各位大哥帮忙解答下

hg6332_163_com 2010-09-24 05:41:45
本人在学习字符串在数组中的储存形式时,根据书上的说法“如果利用一个scanf函数输入多个字符串,则在输入时以空格分隔”写了一段代码,本来没什么问题的,但是本人看书上scanf函数内的格式控制部分是“%s%s%s”的格式,这样才能以空格分隔字符串,本人好奇用逗号可不可以达到同样的效果,就改成“%s,%s,%s”,以下是本人写的代码
#include <stdio.h>
int main()
{
char c1[10],c2[10],c3[3];
scanf("%s,%s,%s",c1,c2,c3);
printf("第一个数组内的字符串是:%s\n第二个数组内的字符串是:%s\n第三个数组内的字符串是:%s\n",c1,c2,c3);

return 0;
}

这样输入后,发觉输入的一连串字符串和逗号都储存在第一个数组内,而另外两个数组都是特殊符号
请问为什么用逗号不能达到用空格一样的效果,而且为什么会出现这样的情况?
...全文
77 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hg6332_163_com 2010-09-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jixingzhong 的回复:]

当然,你也可以使用自定义的输入字符集来实现你的逻辑,比如:

scanf("%[^,],%[^,],%[^,]",c1,c2,c3);
[/Quote]
书上没有教这个,学习了
liutengfeigo 2010-09-24
  • 打赏
  • 举报
回复
老大出动了
long2015 2010-09-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jixingzhong 的回复:]

更多信息参考:
http://baike.baidu.com/view/1390039.htm
[/Quote]

.。。
dxms8 2010-09-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jixingzhong 的回复:]
当然,你也可以使用自定义的输入字符集来实现你的逻辑,比如:

scanf("%[^,],%[^,],%[^,]",c1,c2,c3);
[/Quote]
学习了,共同进步~
十八道胡同 2010-09-24
  • 打赏
  • 举报
回复
那你出入也得 以,隔开
  • 打赏
  • 举报
回复
楼上正解,厉害!
jixingzhong 2010-09-24
  • 打赏
  • 举报
回复
更多信息参考:
http://baike.baidu.com/view/1390039.htm
jixingzhong 2010-09-24
  • 打赏
  • 举报
回复
当然,你也可以使用自定义的输入字符集来实现你的逻辑,比如:

scanf("%[^,],%[^,],%[^,]",c1,c2,c3);
jixingzhong 2010-09-24
  • 打赏
  • 举报
回复
因为逗号也是%s的成员,也会被接收为字符串输入的内容

%s输入时,只有在遇到white space(空格,换行,tab)的时候,输入才结束,逗号不属于white space
xtra 2010-09-24
  • 打赏
  • 举报
回复
scanf只有在遇到可能不是属于格式串指定的转换说明的内容的时候才停止。逗号是字符串的一部分。所以它会继续读下去一直到把三个字符串(包括中间的两个逗号)都读到c1里面。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧