PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[问题] 整列字串输入与取得
楼主:
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
继续阅读
[问题] 2位数以上的四则运算
amy99778
Re: [问题] 在Linux下,C/C++可以使用messagebox吗?
better4532
[问题] 无限循环逾时跳出
andy2007
[问题] C读取txt档到一半就挂了? 第一行读不到?
m4141922
[问题]矩阵的次方问题
ljuyentintho
[问题] 自订标头档
jacky1989
[问题] ACM 101 - Runtime Error (已解决)
jammy50605
[问题] mpi 在单一node开启外部程式
rx800102
[问题] pointer_array size的问题
kdok123
Re: [问题] 请教一些观念题(指标,容量,reference)
cjcat2266
Links
booklink
Contact Us: admin [ a t ] ucptt.com