字符串处理函数fgets()和gets()

scanf():一次只能接受一个单词,不能接受一行

gets():接受一整行的输入,输入多少就读取多少,但有可能输入的长度和要赋值的变量目标不一致而导致缓冲区溢出,这也就意味着它可能会改变不属于当前程序所在空间的数据,一次在新标准C11中已经被废弃不用了,不提倡使用gets()。

gets_s():​新标准C11中的可选项,因为是可选的所以可能有的编译器并没有实现这个函数 所以也就不支持这个函数,它相比较gets()多了一个参数,需要指明待读取内容的长度防止数组越界。


fgets():​一共有三个参数,第一个参数:存储所得数据的缓冲区;第二个参数:读入数据的最大长度,第三个:我们选择需要输入的地方 例如stdio表示从键盘输入


ps:gets()在读取到换行符后会将它丢弃,而fgets()则会保留换行符​,将换行符读取到字符串之中。puts()输出是会在字符串最后补一个换行符,而fputs()则不会,所以一般gets()搭配puts()使用;fgets()搭配fputs()使用。

你可能感兴趣的:(C语言笔记)