當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。