說明:如果您有任何疑問或想咨詢其他業務請撥打電話 400 685 0732
全網監測海量數據按需發布監測預警
實時把握輿情動態精準追溯信息源頭
一個函數該如何使用?我們最先要了解的就是這個函數的語法以及具體的含義是什么,所以今天我們就來看一看fgets函數在實際的運用過程當中是如何使用的,希望能給大家帶來一定的幫助。
fgets函數——linux中fgets函數如何理解
fgets函數是從輸入流中讀取一個字符串,它是遇到換行符,或者傳輸了限定的字符數量,或者遇到EOF文件尾就停止(它會把換行符也加到接收字符串里面)。fgets函數的原型是:
char*fgets(char*s,intn,FILE*stream);
函數參數說明:第一個參數是接收參數,用于接收輸入文件流的字符串,第二個參數n是字符串傳輸長度限定參數,表示當接收了n-1個字符時停止寫入,第三個參數是文件流(就是fopen函數返回的文件流),也可以是輸入流stdin。使用這個函數需要include頭文件。
fgets函數和scanf的%s參數的區別是:scanf接收輸入字符串時,是遇到空白字符就停止,而且scanf無法限定接收字符串的長度。
fgets函數如何用
fget函數的原型如下:char*fgets(char*buf,intn,FILE*fp)
功能:從文件流讀取一行,送到緩沖區,使用時注意以下幾點:
1.當遇到換行符或者緩沖區已滿,fgets就會停止,返回讀到的數據,值得注意的是不能用fgets讀二進制文件,因為fgets會把二進制文件當成文本文件來處理,這勢必會產生亂碼。
2.每次調用,fgets都會把緩沖區的最后一個字符設為null,這意味著最后一個字符不能用來存放需要的數據,所以如果有一行,含有LINE_SIZE個字符(包括換行符),要想把這行讀入緩沖區,請把參數n設為LINE_SIZE+1
3.由結論1可推出:給定參數n,fgets只能讀取n-1個字符(包括換行符),如果有一行超過n-1個字符,那么fgets返回一個不完整的行,也就是說,只讀取該行的前n-1個字符,但是,緩沖區總是以null字符結尾,對fgets的下一次調用會繼續讀該行。
用法舉例:
讀取一個文件并打印
FILE*fp=fopen(argv[1],”r”);
charbuf[200];
while(fgets(buf,200,fp)!=NULL){/*每行的字符不能超過199才能正常工作*/
printf(“%s”,buf);
}
注意打印不用使用printf(“%s/n”,buf),因為它會把換行符也讀進去
以上就是fgets函數該如何使用的所有內容,學習函數最先就是學習函數的一些語法,以及這些參數的含義,只有這些弄懂了,在實際運用當中才會熟練的運用,如果大家還想了解更多與之有關的內容,歡迎關注我們文軍營銷的官網。
說明:如果您有任何疑問或想咨詢其他業務請撥打電話 400 685 0732