c library-stdio.h

本文详细介绍了C语言中的文件操作,包括文件的打开、关闭、读写等基本操作,以及如何进行格式化输入输出、字符读写等高级操作。同时,还介绍了文件定位、错误处理等方面的知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件操作:
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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值