1.每次读写一个字符
int getc( FILE *fp )
int fgetc( FILE *fp )
int getchar( void )
getc 和 fgetc 的区别是getc 是由宏实现的而fgetc是个函数。这就意味着:
(1) getc的参数不能是有副作用的表达式。
(2) fgetc可以作为参数传递给另一个函数。
(3) getc的效率要比fgetc高一些。
注意这三个函数返回值都是整数而不是char类型。因为返回值除了要表示256个字符外还要表示一个EOF。
无论是出错还是遇到文件尾都返回EOF,可以用feof和ferror函数进行区分。
int putc( int c, FILE *fp )
int fputc( int c, FILE *fp )
int putchar( int c )
与输入函数一样putc由宏实现,fputc由函数实现。
2.每次读写一行。
char* fgets( char *buf, int size,FILE *fp)
char* gets( char *buf )
gets 函数没有指定缓冲区长度,因此可能会导致问题,因此不建议使用。
fgets 函数得出参总是一个字符串,但可能是一个不包括换行符的字符串。
int fputs(const char*s ,FILE *stream)
int puts(const char *s)
fputs函数不会自己添加换行符,而puts会增加换行符。
int getc( FILE *fp )
int fgetc( FILE *fp )
int getchar( void )
getc 和 fgetc 的区别是getc 是由宏实现的而fgetc是个函数。这就意味着:
(1) getc的参数不能是有副作用的表达式。
(2) fgetc可以作为参数传递给另一个函数。
(3) getc的效率要比fgetc高一些。
注意这三个函数返回值都是整数而不是char类型。因为返回值除了要表示256个字符外还要表示一个EOF。
无论是出错还是遇到文件尾都返回EOF,可以用feof和ferror函数进行区分。
int putc( int c, FILE *fp )
int fputc( int c, FILE *fp )
int putchar( int c )
与输入函数一样putc由宏实现,fputc由函数实现。
2.每次读写一行。
char* fgets( char *buf, int size,FILE *fp)
char* gets( char *buf )
gets 函数没有指定缓冲区长度,因此可能会导致问题,因此不建议使用。
fgets 函数得出参总是一个字符串,但可能是一个不包括换行符的字符串。
int fputs(const char*s ,FILE *stream)
int puts(const char *s)
fputs函数不会自己添加换行符,而puts会增加换行符。