Poedu_C语言_lesson24_20161006_字符串处理函数_fgets与gets

来源:互联网 发布:wincc sql 无访问权限 编辑:程序博客网 时间:2024/06/11 23:48
今天来学习一些字符串处理,看下主要内容:

先来看下字符串输入函数:scanf,gets,get_s,fgets以及getchar
scanf:每次只能接受一个单词,无法接收整行的数据
在你使用scanf的时候,编译器可能会报错,因为scanf是不安全的,在前面有scanf详解中有解释,此处就不再赘述了
gets:用于接收整行的输入,读取后会将换行符丢弃。我们在输入的时候,最后一个动作一般是回车,而gets在接收的时候,不会将换行符接收到缓冲区中。
=>因为gets是输入多少,接收多少,所以就不安全了。
=>像scanf一样,gets也有一个gets_s版本。

gets_s:两个参数:(存入数组,长度)

=>如果超长,会提示错误

=>将缓冲区的首字母设置为0,认为之后的字符串完全不存在,也就是空的字符串,之后再将缓冲区里面的所有数据全部读取完,然后交给编译器来处理(抛出异常或者返回错误等)

=>但是,gets_s是C11标准的可选项。也就是说,编译器可以选择支持或者不支持,如果在某个编译器上使用时发现不能支持,也是可以理解的。所以,不推荐使用。

fgets:用于获取整行的数据,不会丢弃换行符

=>三个参数:缓冲区,读入数据最大的长度,stdin(接受键盘输入时必须是stdin,从文件中读取的话填入文件句柄)

=>对于超过设定长度的数值,会分次进行读取,直到stdin里没有数据为止

=>多用于文件的读入

=>fgets与gets的区别:是否接收换行符!!

getchar:用于接收输入的单个字符

字符串的输出函数:

输出函数与输入函数通常是配套使用的:

fgets接收,fputs输出:

=>fputs(str,stdout):显示在显示屏上,不会在字符之后添加换行符

gets_s接收,puts输出:

=>puts(str):会在字符之后添加换行符

getchar接收,putchar输出:

=>getchar从stdin中一个个的读取字符,直到你想要停止的时候

=>相比于上两种方式,putchar更加的灵活,可以在你需要的地方随时停止输出而不用输出整行


作业:用getchar和putchar完成gets_s,fgets和puts,fputs这些函数


感谢阅读!

如有错误,烦请指正!





0 0