谢谢!这个方案应该比较安全。你说scanf有风险,那么是什么原因产生风险的,我想了解一下(要是scanf的风险与gets的风险比起来可以忽略不计,那使用scanf也是可以的啊,我这么认为的。不过这我只是假设了一种情况,因为我还没了解到更多的细节)
追答scanf的风险要小的多,主要就是越界。 用%s的时候,由于传过去的是指针,所以系统是不知道你字符数组的大小的 如果屏幕上输入过长 就会越界
而且scanf对于空格 并没有什么方法可以解决,这个也是一个弱势
赞!fgets(s,len,stdin); 第一次看到这么写的 !!
再加上 s[strlen(s)-1]='\0'; 把'\n'覆盖掉就OK了
如果 fgets 能把成功读取的字符个数返回 并且 自己能把结尾的'\n'处理成'\0' 那么它就更完美了
只可惜fgets不会这样。。。
如果实在不爽,LZ还是像上面建议那样自己写一个好了。。
你上面的回答、、、是要告诉我你没学过? 还是要告诉我不可能用scanf输入含有空格的字符串?