[问题] scanf输入一串逗号隔开的数字问题

楼主: xjpjeass (人人)   2017-12-13 23:37:40
开发平台(Platform): (Ex: Win10, Linux, ...) s
codeblocks
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)s
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
各位版大们好,小弟在写binary search tree的时候,竟然一开始在输入数据的部分就遇到问题orz,因为题目规定输入形式要以
“1,2,3,7,12,0,21”这种形式喂给程式,也就是你输入这串后,程式会开始一个一个数字安插进二元搜寻树中。
我的想法是写成:
while(scanf("%d,", &num) != EOF)
{
statement;
}
这样子,里面statement是把num分别插进树中。不过我这样写以后,用printf测试结果,数字都有读到,不过我输入完一串数据后,程式还是一直在等我输入下一笔,除非我输入非数字字符才会停止等待。
ex:10,12,31,42
输出: 10 12 31 42
然后光标一直闪,就是等我输入下一笔,可是我只要这一笔就够了,不想一直在等待输入的状态。
有想过用sscanf分析,不过因为测资的数字数量不一定,所以好像不能用sscanf...
喂入的资料(Input):s
like 10,21,13,4,15
预期的正确结果(Expected Output):s
输入完这笔之后就开始建立树、print出整棵树等等
错误结果(Wrong Output):s
一直在等我输入下一笔,除非我单独输入一个非数字字符他才会被强制停止循环。
程式码(Code):(请善用置底文网页, 记得排版) s
只有片段,scanf的部分
while(scanf("%d,", &num) != EOF)
{
statement;
}
补充说明(Supplement):s
楼主: xjpjeass (人人)   2017-12-13 23:39:00
不好意思 因为用手机发文,没注意到把一些控制文章段落的代码删掉 所以有些字变乱码QQ
作者: Lipraxde (Lipraxde)   2017-12-14 01:21:00
ctrl+c,或者是另外写个资料档用"prog.exe < data.txt"送原因嘛…查查scanf、stdin、EOF应该就可以找到了
作者: galic (嘎利)   2017-12-14 10:14:00
ctrl+c也太威 干脆按关机键一劳永逸
楼主: xjpjeass (人人)   2017-12-14 11:25:00
哦..因为我的写法是用EOF判断,所以要按ctrl c ,不过题目要求好像是要那串数字输进去程式就自己跑了,请问有没有其他比较好的写法呢,请各位指教orz
作者: MOONRAKER (㊣牛鹤鳗毛人)   2017-12-14 11:29:00
ctrl c咧 到底EOF是什么知不知道阿你是在参加比赛吗 还是学校规定作业一定要这样写都不是的话可以不用理这个要求 不是重点而且太麻烦
作者: loveflames (咕啾咕啾魔法阵)   2017-12-14 11:43:00
ctrl+c....这个跟signal有关
作者: Lipraxde (Lipraxde)   2017-12-14 12:21:00
抱歉喔…ctrl+c会把你程式关掉
作者: school4303 (某爬虫类)   2017-12-14 14:07:00
eof是Ctrl+z.....
楼主: xjpjeass (人人)   2017-12-14 14:19:00
好 感谢各位的指教 那我就先用这样写了 学校是没有硬性规定一定是只输入一笔啦
作者: galic (嘎利)   2017-12-14 14:23:00
你想知道的东西 查查scanf就有了...
作者: peterwu4 (notd)   2017-12-14 18:08:00
eof不是ctrl-c啦,google一下嘛,不同的系统不一样

Links booklink

Contact Us: admin [ a t ] ucptt.com