fgets函數是C語言中用來從指定的流中讀取一行數據的函數。它的原型如下:
char *fgets(char *str, int n, FILE *stream);
fgets函數的三個參數分別是:
str
:字符指針,用來存儲讀取到的數據。
n
:整型數,表示最多讀取的字符數,包括終止符\0
。
stream
:文件指針,表示從哪個流中讀取數據,常用的流有stdin
(標準輸入)、stdout
(標準輸出)和文件指針。
fgets函數的工作原理是從指定的流中讀取字符,直到讀取到換行符'\n'
、文件結束符EOF
或者讀取了n-1個字符(如果讀取到了n-1個字符,會在末尾自動加上終止符\0
)為止。讀取到的字符會存儲到str指向的字符數組中,并在末尾加上終止符\0
。
fgets函數的返回值是讀取到的字符數組的指針。如果讀取失敗,返回值為NULL。
使用fgets函數時,需要注意以下幾點:
fgets函數會將讀取到的換行符也存儲到字符數組中,所以需要手動判斷是否讀取到了換行符,并在需要時將其刪除。
fgets函數會保留讀取到的換行符,所以在進行字符串比較時需要注意換行符的存在。
fgets函數返回的字符數組可能包含多余的空格,需要手動處理。
下面是一個使用fgets函數從標準輸入中讀取一行數據的例子:
#include <stdio.h>
int main() {
char str[100];
printf("Please enter a string: ");
fgets(str, sizeof(str), stdin);
printf("You entered: %s", str);
return 0;
}
這個程序會提示用戶輸入一個字符串,然后使用fgets函數從標準輸入中讀取這個字符串,并打印出來。