| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 899 人关注过本帖
标题:字符串函数的用法
只看楼主 加入收藏
qq200258
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2016-10-29
结帖率:0
收藏
 问题点数:0 回复次数:4 
字符串函数的用法
看了书上的一些代码 对于字符串有一些疑问 如下:

1.书上一些实例代码对于输入字符串喜欢用自己自定义函数 就是用fgets然后用strchr去掉换行符

为什么不直接用gets呢?

2.gets getchar fgets有什么本质的区别呢?

3.如何实现 按Y 或 N 选择… 就是不用按回车就获取第一个字符


虚心学习

[此贴子已经被作者于2017-5-2 10:42编辑过]

搜索更多相关主题的帖子: 如何 换行符 字符串 
2017-05-02 10:40
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
gets无法检测数组的容量,只要没有检测到回车,它就会一直读取。
这样就会造成 缓冲区溢出。
scanf也有相同的问题。

实际上C11已经删除了gets()这个函数,取而代之的是 MS提供的 gets_s()

PS:蠕虫就跟不安全的输入函数有关。

具体的估计你需要学习黑客技术才能更清楚的知道具体,你目前只需要知道,尽一切可能不要使用这两个函数就够了。
strcpy 不检测目标数组容量的函数同样不安全,但这种不安全是可以通过检测目标数组的容量和源字符串的大小来避免的,由于这些函数不进行安全检测,所以他们要比他们的安全版本在执行效率上更快。


非缓冲输入不是C标准库,但大部分编译器都实现了这个功能。
你需要包含 conio.h 然后使用 getch() 这个函数

PS : linux 下没有这个头文件。

[此贴子已经被作者于2017-5-2 11:38编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-02 11:25
qq200258
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2016-10-29
收藏
得分:0 
回复 2楼 renkejun1942
那第三个问题呢 就是 不用回车 按下一个按键就把该字符录入
2017-05-02 23:13
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 3楼 qq200258
把二楼的我的回复再看一次。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-02 23:15
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 3楼 qq200258
getch()就是不用点输入回车
2017-05-03 04:03
快速回复:字符串函数的用法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014053 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved