為了讀取帶空格的字符串值,我們可以使用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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。