PoEdu_24_字符串处理(fgets与gets)

来源:互联网 发布:mgcp对接时默认端口号 编辑:程序博客网 时间:2024/04/20 17:00

字符串处理函数
下面来看一下各个函数的利弊
字符串输入函数
scanf:能够进行格式化的输入,但是不能接收空格,当我们需要接收一行的数据的时候会比较麻烦。
gets:是c语言早期提供的一个函数,主要用于接收一整行的数据。但是由于会导致缓冲区溢出,在C11中增加了它的安全版本gets_s,因为c语言标准委员会并没有对它进行强制性的要求,它在有些编译器中可能不被支持。gets_s中需要传递两个参数。第一个是我们要存储的缓冲区,第二个是输入数据最大的长度

fgets:这个是我们用的比较多的一个函数了,它需要传递三个参数。第一个是我们要存储的缓冲区,第二个是输入数据最大的长度,第三个参数是我们选择输入的位置。它更多的用于文件的输入,所以当我们想要从文件中读取数据的话,就传递一个文件的句柄。当我们想要从键盘进行输入的时候,就必须使用到stdin来读取,我们所有的键盘输入都存在stdin中。另外,它会读取到我们输入的换行符并存到缓冲区中,而gets则不会读取。
如果我们传递的输入的最大长度小于我们输入的长度就会发生缓冲区溢出。当发生缓冲区溢出时这两个函数的处理方式是不一样的。fgets只会接收最大长度的输入,其余的存在缓冲区中。gets_s则会抛出异常。

字符串输出函数
**puts**gets与puts一般是连在一起使用的,puts在输出的时候会在后面加上一个换行符。
**fputs**fgets与fputs一般是连在一起使用的,fputs不会加上换行符

上面的这些函数都可以用getchar()与putchar()来实现,大家可以试试。

0 0