今天来学习一些字符串处理,看下主要内容:
先来看下字符串输入函数:scanf,gets,get_s,fgets以及getcharscanf:每次只能接受一个单词,无法接收整行的数据在你使用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这些函数
感谢阅读!
如有错误,烦请指正!