fgetc
函數從指定的文件中讀一個字節,getchar
從標準輸入讀一個字節,調用getchar()
相當於調用fgetc(stdin)
。
#include <stdio.h>
int fgetc(FILE *stream);
int getchar(void);
返回值:成功返回讀到的字節,出錯或者讀到文件末尾時返回EOF
fputc函數向指定的文件寫一個字節,putchar向標準輸出寫一個字節,調用putchar(c)相當於調用fputc(c, stdout)。
#include <stdio.h>
int fputc(int c, FILE *stream);
int putchar(int c);
返回值:成功返回寫入的字節,出錯返回EOF
fgets
從指定的文件中讀一行字符到調用者提供的緩衝區中,gets
從標準輸入讀一行字符到調用者提供的緩衝區中。
#include <stdio.h>
char *fgets(char *s, int size, FILE *stream);
char *gets(char *s);
返回值:成功時s指向哪返回的指針就指向哪,出錯或者讀到文件末尾時返回NULL
fgets
函數,參數s
是緩衝區的首地址,size
是緩衝區的長度,該函數從stream
所指的文件中讀取以'\n'
結尾的一行(包括'\n'
在內)存到緩衝區s
中,並且在該行末尾添加一個'\0'
組成完整的字符串。
如果文件中的一行太長,fgets
從文件中讀了size-1
個字符還沒有讀到'\n'
,就把已經讀到的size-1
個字符和一個'\0'
字符存入緩衝區,文件中剩下的半行可以在下次調用fgets
時繼續讀。
如果一次fgets
調用在讀入若干個字符後到達文件末尾,則將已讀到的字符串加上'\0'
存入緩衝區並返回,如果再次調用fgets
則返回NULL
,可以據此判斷是否讀到文件末尾。
fgets
只適合讀文本文件而不適合讀二進制文件,並且文本文件中的所有字符都應該是可見字符,不能有'\0'
。
fputs
向指定的文件寫入一個字符串,puts
向標準輸出寫入一個字符串。
#include <stdio.h>
int fputs(const char *s, FILE *stream);
int puts(const char *s);
返回值:成功返回一個非負整數,出錯返回EOF
緩衝區s
中保存的是以'\0'
結尾的字符串,fputs
將該字符串寫入文件stream
,但並不寫入結尾的'\0'
。與fgets
不同的是,fputs
並不關心的字符串中的'\n'
字符,字符串中可以有'\n'
也可以沒有'\n'
。puts
將字符串s
寫到標準輸出(不包括結尾的'\0'
),然後自動寫一個'\n'
到標準輸出。