文件操作:
int remove(const char * filename ) 删除文件,成功返回0,错误返回errorno,可以从perror()获取详情
int rename ( const char * oldname, const char * newname ); 重命名文件,若新文件已存在,运行结果取决于环境。返回同上。
FILE * tmpfile ( void ); 创建临时文件,wb+模式,若不成功返回NULL。
char * tmpnam ( char * str ) 创建临时文件名。若str不为NULL,则至少要有L_tmpnam字节长,用来存储返回文件名用。若 str 为NULL,函数返回一内部静态内存地址(保存了临时文件名),当下一次以NULL调用函数的时候,该内存会被修改。
文件访问:
int fclose ( FILE * stream ); 关闭文件,成功返回0
int fflush ( FILE * stream ); 刷新缓冲区
FILE * fopen ( const char * filename, const char * mode );打开文件
FILE * reopen ( const char * filename, const char * mode, FILE * stream );关闭stream文件,再重新指向新打开的文件
void setbuf ( FILE * stream, char * buffer );设定缓冲区,buff若为null即禁用缓冲区。buff至少要有BUFSIZ 长
int setvbuf ( FILE * stream, char * buffer, int mode, size_t size );设定缓冲区参数
格式化输入输出:
int fprintf ( FILE * stream, const char * format, ... );向流中写入字符。成功返回字符个数,失败返回负数
int fscanf ( FILE * stream, const char * format, ... );按format读取参数,返回成功的参数个数
int printf ( const char * format, ... );向stdout输出,成功返回输出个数,失败返回负数
int scanf ( const char * format, ... ); 同fscanf,但流为stdin
int sprintf ( char * str, const char * format, ... );向str写入格式化字符,会自动添加\0,返回写入个数但不包括\0
int sscanf ( char * str, const char * format, ...);从str读取参数
int vfprintf ( FILE * stream, const char * format, va_list arg );格式化字符至流,参数使用在va_list中,但不会自动call va_end,需要手动va_end (arg);。
int vprintf ( const char * format, va_list arg );
int vsprintf (char * str, const char * format, va_list arg );
字符输入输出:
int fgetc ( FILE * stream );读取一个字节,失败返回EOF,用feof()进行确定
char * fgets ( char * str, int num, FILE * stream );从流中读取至多num-1个字符(因为会自动添加\0),或者遇到\n或者\0,str包括\n或者\0。成功返回同str,失败返回NULL,str保持不变
int fputc ( int character, FILE * stream );向流中写入一字符,成功返回同character,失败返回EOF
int fputs ( const char * str, FILE * stream );向流中输出一字符串,拷贝字符串直到遇到\0
int getc ( FILE * stream );同fgetc,但为宏,不能做为函数指针
int getchar ( void );从标准输入读取
char * gets ( char * str );从标准输入读取,直到\n或者eof,但不添加至str,此有别与fgets。自动添加\0。成功返回同str,失败null
int putc ( int character, FILE * stream );同fputc,但为宏!
int putchar ( int character );标准流输出
int puts ( const char * str );向标准流中输出一字符串,自动添加\n,拷贝字符串直到遇到\0
int ungetc ( int character, FILE * stream );把一个字符退回到输入流中
块输入输出:
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );读取count块size大小的字节,存储至ptr数组中。返回个数,若成功等于count
size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );写块
文件定位:
int fgetpos ( FILE * stream, fpos_t * position );读取位置至position,fsetpos()用。成功返回0
int fseek ( FILE * stream, long int offset, int origin );重新定位至origin+offset。origin有三个常量SEEK_SET:开始,SEEK_CUR:当前,SEEK_END:末尾。成功返回0
int fsetpos ( FILE * stream, const fpos_t * pos );重新定位
long int ftell ( FILE * stream );
void rewind ( FILE * rewind );重置至开头
错误操作:
void clearerr ( FILE * stream );当流遇到错误或者EOF,会影响到rewind, fseek or fsetpos 调用,此函数为清除用。
int feof ( FILE * stream );是否已至末尾
int ferror ( FILE * stream );判断前一写或者读操作等是否对流造成错误
void perror ( const char * str );翻译errno错误代码至stderr,若str不为空则也会输出
相关宏:
EOF:结束码
FILENAME_MAX:文件名最大长度
NULL:空指针
TMP_MAX:最大临时文件个数
相关类型:
FILE:流
fpos_t:文件位置
size_t:整数
字符格式化:
%[flags][width][.precision][length]specifier
specifier代表字符:
d or i Signed decimal integer,392
u Unsigned decimal integer,7235
o Unsigned octal,610
x Unsigned hexadecimal integer,7fa
X Unsigned hexadecimal integer (uppercase),7FA
f Decimal floating point, lowercase,392.65
F Decimal floating point, uppercase,392.65
e Scientific notation (mantissa/exponent), lowercase,3.9265e+2
E Scientific notation (mantissa/exponent), uppercase,3.9265E+2
g Use the shortest representation: %e or %f,392.65
G Use the shortest representation: %E or %F,392.65
a Hexadecimal floating point, lowercase,-0xc.90fep-2
A Hexadecimal floating point, uppercase,-0XC.90FEP-2
c Character,a
s String of characters,sample
p Pointer address,b8000000
n Nothing printed.
The corresponding argument must be a pointer to a signed int.
The number of characters written so far is stored in the pointed location.
% A % followed by another % character will write a single % to the stream,%
flags可选值有+-(space)#0
length可选值有hlL