fgets()函数 和 gets函数
时间: 2023-09-24 09:11:38 浏览: 145
sendreceive,c语言gets函数源码,c语言项目
fgets()函数和gets()函数都是C语言中用于从标准输入流中读取字符串的函数,但它们有一些区别。
1. fgets()函数
fgets()函数的函数原型为:
```c
char* fgets(char* str, int n, FILE* stream);
```
它从指定的文件流stream中读取n-1个字符或直到读到换行符为止,并将读取到的字符存储到str数组中,最后在str数组末尾添加一个空字符'\0'。如果读取到的字符数小于n-1,则fgets()会在读取完所有字符后自动添加一个空字符。
fgets()函数的优点是可以避免缓冲区溢出,因为它会限定读取的字符数。但fgets()函数会将换行符也读入字符串中,并且如果输入的字符串长度超过了n-1,fgets()会将剩余的字符留在输入缓冲区中。
2. gets()函数
gets()函数的函数原型为:
```c
char* gets(char* str);
```
它从标准输入流中读取一行字符,直到读到换行符为止,并将读取到的字符存储到str数组中,最后在str数组末尾添加一个空字符'\0'。gets()函数不会限定读取的字符数,因此可能导致缓冲区溢出。
gets()函数的缺点是容易导致缓冲区溢出,因为它不会限定读取的字符数。因此,在实际应用中,gets()函数不再被推荐使用。
综上所述,fgets()函数比gets()函数更为安全,更为常用。
阅读全文