当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C语言 fgets() and gets()用法及代码示例


为了读取带空格的字符串值,我们可以使用C编程语言中的gets()或fgets()。在这里,我们将看到gets()和fgets()有什么区别。

fgets()

它从指定的流中读取一行并将其存储到str指向的字符串中。当读取(n-1)个字符,读取换行符或到达文件末尾(以先到者为准)时,它将停止。
用法:


char *fgets(char *str, int n, FILE *stream)
str: Pointer to an array of chars where the string read is copied.
n: Maximum number of characters to be copied into str 
(including the terminating null-character).
*stream: Pointer to a FILE object that identifies an input stream.
stdin can be used as argument to read from the standard input.

returns:the function returns str
  • 它遵循一些参数,例如最大长度,缓冲区,输入设备参考。
  • 使用安全,因为它可以检查数组绑定。
  • 它将继续读取,直到遇到换行符或字符数组的最大限制为止。

示例:假设最大字符数为15,并且输入长度大于15,但是fgets()仍然只能读取15个字符并进行打印。

// C program to illustrate 
// fgets() 
#include <stdio.h> 
#define MAX 15 
int main() 
{ 
    char buf[MAX]; 
    fgets(buf, MAX, stdin); 
    printf("string is:%s\n", buf); 
  
    return 0; 
}

由于fgets()从用户读取输入,因此我们需要在运行时提供输入。

Input:
Hello and welcome to GeeksforGeeks

Output:
Hello and welc

gets()

从标准输入(stdin)读取字符,并将它们作为C字符串存储到str中,直到到达换行符或文件末尾。
用法:

char * gets ( char * str );
str:Pointer to a block of memory (array of char) 
where the string read is copied as a C string.
returns:the function returns str
 
  • 使用不安全,因为它不检查数组绑定。
  • 它用于从用户读取字符串,直到未遇到换行符为止。

示例:假设我们有一个由15个字符组成的字符数组,并且输入大于15个字符,则gets()将读取所有这些字符并将其存储到变量中,因为gets()不会检查输入字符的最大限制,因此在任何时候编译器都可能返回缓冲区溢出错误。

// C program to illustrate 
// gets() 
#include <stdio.h> 
#define MAX 15 
  
int main() 
{ 
    char buf[MAX]; 
  
    printf("Enter a string:"); 
    gets(buf); 
    printf("string is:%s\n", buf); 
  
    return 0; 
}

由于gets()从用户读取输入,因此我们需要在运行时提供输入。

Input:
Hello and welcome to GeeksforGeeks

Output:
Hello and welcome to GeeksforGeeks


相关用法


注:本文由纯净天空筛选整理自Kanchan_Ray大神的英文原创作品 fgets() and gets() in C language。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。