getc();fgetc();getchar();gets();fgets();

nan_lei發表於2018-07-21

函式標頭檔案:#include <stdio.h>

函式原型:

int fgetc(FILE *stream);
char *fgets(char *s, int size, FILE *stream);
int getc(FILE *stream);
int getchar(void);
char *gets(char *s);

函式說明:

fgetc() :從讀取檔案流中讀取下一個字元,並將其以無符號數返回,或者返回檔案末尾標誌或錯誤標誌。

               unsigned char cast to an int,

getc()  :和fgetc差不多,只是在讀取的時候會檢查檔案流。
getchar() :和getc(stdin)等效。
gets() :從stdin中讀取一行字串,直到一行結束或是到檔案末尾,字串以’\0’結尾。但是不會檢查是否有溢位。
fgets() 讀取少於size長度的字元,直到新的一行開始或是檔案結束,最後會在讀取的字串最後一個字元後加一個結束字元’\0’ 

返回值:

fgetc();getc() and getchar() 如果讀取成功返回的是讀取到的字元,並且將字元轉換為無符號數或是檔案末尾,讀取失敗則返回錯誤值。

gets() and fgets() 如果讀取成功返回的是讀取到的字元,無資料讀取或讀取錯誤返回NULL。

建議:

最好不要使用gets,因為它不檢測讀回來的資料長度是否超過自己所擁有的buff的長度,所以有可能會造成溢位。所以它的使用會造成程式的潛在隱患,會使程式不安全。可以是用fgets()來代替它。

轉自:https://blog.csdn.net/duopintang/article/details/7322001