fgets函數(shù)及其用法,C語(yǔ)言fgets函數(shù)詳解

小云
233
2023-09-09 05:48:41

fgets函數(shù)是C語(yǔ)言中用來(lái)從指定的流中讀取一行數(shù)據(jù)的函數(shù)。它的原型如下:

char *fgets(char *str, int n, FILE *stream);

fgets函數(shù)的三個(gè)參數(shù)分別是:

  • str:字符指針,用來(lái)存儲(chǔ)讀取到的數(shù)據(jù)。

  • n:整型數(shù),表示最多讀取的字符數(shù),包括終止符\0

  • stream:文件指針,表示從哪個(gè)流中讀取數(shù)據(jù),常用的流有stdin(標(biāo)準(zhǔn)輸入)、stdout(標(biāo)準(zhǔn)輸出)和文件指針。

fgets函數(shù)的工作原理是從指定的流中讀取字符,直到讀取到換行符'\n'、文件結(jié)束符EOF或者讀取了n-1個(gè)字符(如果讀取到了n-1個(gè)字符,會(huì)在末尾自動(dòng)加上終止符\0)為止。讀取到的字符會(huì)存儲(chǔ)到str指向的字符數(shù)組中,并在末尾加上終止符\0

fgets函數(shù)的返回值是讀取到的字符數(shù)組的指針。如果讀取失敗,返回值為NULL。

使用fgets函數(shù)時(shí),需要注意以下幾點(diǎn):

  • fgets函數(shù)會(huì)將讀取到的換行符也存儲(chǔ)到字符數(shù)組中,所以需要手動(dòng)判斷是否讀取到了換行符,并在需要時(shí)將其刪除。

  • fgets函數(shù)會(huì)保留讀取到的換行符,所以在進(jìn)行字符串比較時(shí)需要注意換行符的存在。

  • fgets函數(shù)返回的字符數(shù)組可能包含多余的空格,需要手動(dòng)處理。

下面是一個(gè)使用fgets函數(shù)從標(biāo)準(zhǔn)輸入中讀取一行數(shù)據(jù)的例子:

#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;
}

這個(gè)程序會(huì)提示用戶輸入一個(gè)字符串,然后使用fgets函數(shù)從標(biāo)準(zhǔn)輸入中讀取這個(gè)字符串,并打印出來(lái)。

0