黑马程序员技术交流社区
标题: C语言学习笔记之fgets()和fputs()函数的使用 [打印本页]
作者: chunhuayun 时间: 2015-9-28 10:22
标题: C语言学习笔记之fgets()和fputs()函数的使用
1.fgets()函数的使用
原型: fgets(数组名, 数组长度 stdin);
该函数是一个文件操作相关的函数,暂时使用这个函数可以
从键盘上接受一个字符串并保存到数组中去。
原来接受字符串保存到数组中的方法
- #include <stdio.h>
- #include <string.h>
- int main(int argc, const char * argv[])
- {
-
- char str[10];
- //1.scanf
- //scanf("%s",str);//缺点,不能接受空格
- //printf("%s",str);
- //2.gets
- //gets(str);//优点:可以接收空格,但是会有一个不安全的警告,如果字符长度位100,但是输入的字符超过100个的话,此时存在隐患,没有空间再存放结束符
- printf("%s",str);
-
- //3.fgets 是一个安全的字符串接收的函数
- //fgets从输入缓冲区读取一个字符串保存到字符数组中
- //当输入的字符串的长度大于数组的长度,此时fgets会自动把数组的最后一个元素变成‘\0’
- //当输入的字符串小于字符数组长度时,fgets函数还会接收回车符
- fgets(str, sizeof(str), stdin);//
- int len = strlen(str);
- if (str[len - 1] == '\n') {
- str[len - 1]='\0';//去除掉多余的\n
- }
- printf("%s",str);
- return 0;
- }
复制代码
打印结果
I am amos!I am a boy
I am amos
分析结果:
看上面的打印结果,只打印了9个字符,最后一个字符自动被设置位\0
2.fputs()函数的使用
- //printf("%s",str);
- //fputs也是一个文件操作相关的函数
- //fputs(数组名, stdout);//表示把一个字符串显示到控制台上
- fputs(str, stdout);//fputs是不会自动换行的,也不能格式化输出
复制代码
3.fgets(),fputs()函数的优缺点
优点:是安全的,scanf和gets都有可能导致越界访问,而fgets可以自动在字符数组结尾设置\0结束符。
缺点:不能格式化输入输出
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |