兩者主要在安全性上存在差别。
函數名: fgets
功 能: 從流中讀取一字元串
用 法: char *fgets(char *string, int n, FILE *stream);
形參注釋:*string輸入資料的首位址;n-1:一次讀入資料塊的長度,其預設值為1k,即1024;stream檔案指針
序 例:
#include <string.h>#include <stdio.h>
int main(void)
{
FILE *stream;
char string[] = "This is a test";
char msg[20];
/* open a file for update */
stream = fopen("DUMMY.FIL", "w+");
/* write a string into the file */
fwrite(string, strlen(string), 1, stream);
/* seek to the start of the file */
fseek(stream, 0, SEEK_SET);
/* read a string from the file */
fgets(msg, strlen(string)+1, stream);
/* display the string */
printf("%s", msg);
fclose(stream);
return 0;
}
fgets函數fgets函數用來從檔案中讀入字元串。fgets函數的調用形式如下:fgets(str,n,fp);此處,fp是檔案指針;str是
存放在字元串的起始位址;n是一個int類型變量。函數的功能是從fp所指檔案中讀入n-1個字元放入str為起始位址的空間内;如果在未讀滿n-1個字
符之時,已讀到一個換行符或一個EOF(檔案結束标志),則結束本次讀操作,讀入的字元串中最後包含讀到的換行符。是以,确切地說,調用fgets函數時,最多隻能讀入n-1個字元。讀入結束後,系統将自動在最後加'/0',并以str作為函數值傳回。
gets()将删除新行符, fgets()則保留新行符.
要去掉fgets()最後帶的“/0",隻要用 s[strlen(s)-1]='/0';即可。
針對于fgets,還要再說兩句,下面這種用法,是安全的判斷檔案讀取結束或者出錯的好方式,切忌不能使用while(!feof(fp))
,還有對于fgets的第二個參數是最大能讀取檔案字元的個數,一般最大的長度是1024位元組。
while(fgets(..., stream)){
/* ... */
}