gets要回车两次,fgets不会去除回车符,scanf遇到空格就结束,该怎么输入字符串?

时间:2022-03-07 01:51:55
我想用一个20B的CHAR数组接收关于文件名的字符串输入。
可是发现
gets的话,要回车两次才能输入,而且还有溢出的漏洞存在
fgets的话,会保存回车符,这也不是我想要的
scanf的话,遇到空格就结束了

请大家推荐一个比较好的字符串输入函数把!

11 个解决方案

#1


还是规定文件名没有空格比较好

#2


请大家推荐一个比较好的字符串输入函数把! 
=================
晕,那楼主自己重新写一个啊~~

#3


LS的意思是用getchar接受输入,然后剔除非字符,非数字,非合法符号的输入,最后指定回车为结束符?

这个好像麻烦了一点啊

#4


自己写个吧

#5


用fgets,你手动删掉最后一个回车符不得了。。

#6


1.改成用命令行参数,大多数程序都会这么处理.
2.一般输入都有最大限制,设一个比较大的buffer.
3.自己写一个.

#7


不清楚

#8


哈哈 

#9


gets();不用敲两次回车的.
fgets();虽然是接收了换行符,但是可以放fp回溯一个字节或两个字节.
恩.LZ自己写个函数得了.个人专用呵呵

#10


getchar()不行吗?把所有的输入保存了,然后自己去处理阿

#11


用fgets
那就释放缓存

#1


还是规定文件名没有空格比较好

#2


请大家推荐一个比较好的字符串输入函数把! 
=================
晕,那楼主自己重新写一个啊~~

#3


LS的意思是用getchar接受输入,然后剔除非字符,非数字,非合法符号的输入,最后指定回车为结束符?

这个好像麻烦了一点啊

#4


自己写个吧

#5


用fgets,你手动删掉最后一个回车符不得了。。

#6


1.改成用命令行参数,大多数程序都会这么处理.
2.一般输入都有最大限制,设一个比较大的buffer.
3.自己写一个.

#7


不清楚

#8


哈哈 

#9


gets();不用敲两次回车的.
fgets();虽然是接收了换行符,但是可以放fp回溯一个字节或两个字节.
恩.LZ自己写个函数得了.个人专用呵呵

#10


getchar()不行吗?把所有的输入保存了,然后自己去处理阿

#11


用fgets
那就释放缓存