如何使用fgets函数代替gets
2013-02-28 13:08
295 查看
fgets的原型是
char* fgets(char* s, int n, FILE* fp);
参数数量比较多,有3个。fgets相比于gets在结果上有一个显著的差别就是fgets会将行末的换行符算到读入的字符串里面。所以相同且正常(输入无错误,缓冲区够大)的情况下,fgets读入的字符串会比gets在末尾'\0'前面多一个换行符;行长度超出缓冲区大小时只读入前 n-1 个字符。因此,
gets(s);
相当于下面两句组合:
fgets(s, sizeof(s), stdin); // 当然这里 s 必须是数组名才能得到正确的数组大小
if(s[strlen(s) - 1] == '\n') s[strlen(s) - 1] = '\0'; // 去掉换行符
因为fgets保留了末尾这个换行符,所以能做到对输入流的状况了若指掌。
char* fgets(char* s, int n, FILE* fp);
参数数量比较多,有3个。fgets相比于gets在结果上有一个显著的差别就是fgets会将行末的换行符算到读入的字符串里面。所以相同且正常(输入无错误,缓冲区够大)的情况下,fgets读入的字符串会比gets在末尾'\0'前面多一个换行符;行长度超出缓冲区大小时只读入前 n-1 个字符。因此,
gets(s);
相当于下面两句组合:
fgets(s, sizeof(s), stdin); // 当然这里 s 必须是数组名才能得到正确的数组大小
if(s[strlen(s) - 1] == '\n') s[strlen(s) - 1] = '\0'; // 去掉换行符
因为fgets保留了末尾这个换行符,所以能做到对输入流的状况了若指掌。
相关文章推荐
- Linux下输入函数fgetc, fgets, getc, getchar, gets使用
- 数据接受函数的使用场合 gets fgets recv*
- JS字符串替换函数全部替换方法 JS 正则表达式如何使用变量
- 如何使用定时器settimeout、setInterval执行能传递参数的函数
- 如何使用sql数据库中的isnull()函数以及null的用法
- gets和fgets函数的区别
- 如何有效地使用函数select()
- Excel:如何使用函数实现多表多条件汇总求和
- excel 中如何使用函数替代case when 进行转换
- 如何使用日期格式化函数
- 关于CSR8670如何使用PioSetMapPins32()函数配置额外的IO口
- 如何正确使用指针(指针作为输出型参数)与结构体指针作为函数参数
- ThinkPHP模版下面如何使用php函数或者自定义函数
- 如何使用SetWindowRgn函数创建异形窗口
- 了解如何使用 PHP 的各种文件函数
- 简单介绍如何使用PowerMock和Mockito来mock 1. 构造函数 2. 静态函数 3. 枚举实现的单例 4. 选择参数值做为函数的返回值(转)
- Linux 下使用C语言 gets()函数报错
- 如何使用Javaconfig代替web.xml配置spring
- . 有一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列,要求执行效率高,并说明如何改善执行效率(该函数必须自己实现,不能使用php函数)。
- python-7-如何使用生成器函数实现可迭代对象?