在上一遍随笔中,我们知道可以用fgets()函数来代替不安全的gets()函数.fgets函数中的第二个参数限制了读取的个数. 上篇文章也提到,fgets是会读取回车换行符的.有时候我们并不希望在字符串中存在换行符.有的时候我们在一行中多输入了几个字符,而这几个字符并不是我们想要的.这时可以写一个小程序解决这个问题 下面看程序(来自于C Primer Plus 第六版):该程序的功能是:读取输入行,删除存在字符串中的换行符,如果没有换行符,则丢弃数组装不下的字符. #include <stdio
C 中大多数缓冲区溢出问题可以直接追溯到标准 C 库.最有害的罪魁祸首是不进行自变量检查的.有问题的字符串操作(strcpy.strcat.sprintf 和 gets).一般来讲,象“避免使用 strcpy()”和“永远不使用 gets()”这样严格的规则接近于这个要求. 今天,编写的程序仍然利用这些调用,因为从来没有人教开发人员避免使用它们.某些人从各处获得某个提示,但即使是优秀的开发人员也会被这弄糟.他们也许在危险函数的自变量上使用自己总结编写的检查,或者错误地推论出使用潜在危险的函数在某
fgets的用法: char *fgets(char *s, int size, FILE *stream); fgets() reads in at most one less than size characters from stream and stores them into the buffer pointed to by s. Reading stops after an EOF or a newline. If a new- l