[问题] 整列字串输入与取得

楼主: laiDark (煎饺加赖)   2014-10-28 09:59:21
开发平台 codeblock
使用 C 语言
http://ppt.cc/SpBT
由于此题ACM需要输入整列字串
于是我使用gets()
http://codepad.org/EQduelG6
这个只是我想先测试输入的状况
但是当我输入n的值的时候
他竟然直接给我空两行!!!
(不好意思 这个部分没办法截到图po上来)
我在想是不是因为printf有加\n的关系
没有加的话 就不会发生这种问题
但是最后测试的输出结果就是要换行....
scanf 虽然不会有这种问题
但是scanf遇到空白字符 不是会停止取字符吗?
像这样 http://ppt.cc/39Fm
printf 就没办法印出整列的@@
到底该怎么办呢?
然后就是不管是用scanf("%s")
还是用gets(字串名称)
输入字串后
比如str[6] 我输入字串 north
是不是compiler 就会视为
str[0] -> n
str[1] -> o
str[2] -> r
str[3] -> t
str[4] -> h
str[5] -> \0
这样是否理解是否正确?
还请各位前辈 帮忙解开小的疑惑 谢谢!!
作者: LPH66 (-6.2598534e+18f)   2014-10-28 11:55:00
scanf 后面跟的 gets 会先吃掉 scanf 没吃掉的换行当做一次输入 (其结果是空字串), 再下一次才会正确读到下一行解法有二: 一是偷鸡法, scanf 完先用一次 gets 把那个换行吃掉, 第二次开始才正常处理; 二是连数字都用 gets 吃进来再用 sscanf 或 atoi 转数字处理
楼主: laiDark (煎饺加赖)   2014-10-28 15:02:00
不好意思 楼上的L大 你说的解决方法 我有点不懂@@不太知道您说的 应该要改成什么才好? 我试过结果就当了..
作者: nakabin (日落)   2014-10-28 16:18:00
L大的意思是法1.连做两次gets 或使用法2.一开始不要用scanf而是也用gets再把char转成int

Links booklink

Contact Us: admin [ a t ] ucptt.com