本文已参与「新人创作礼」活动,一起开启掘金创作之路。
目录
一、简介
常见的IO函数分为两类,分别是标准IO和系统IO,具体的区别和联系为:
- 不同系统的系统IO有区别,而标准IO是任何平台通用的;
- 标准IO是依赖于系统调用IO实现的;
- 标准IO吞吐量大,文件IO响应速度快;
- 标准IO与文件IO不可混用。
二、常见的标准IO函数
FIFE *fopen(const char *path, const char *mode);
/*
path: 打开文件路径
mode: 打开文件模式
*/
int fclose(FIFE *stream)
// 关闭当前文件流
int fgetc(FIFE *stream)
// 读取一个字符,返回该字符转换为int类型的值
int fputc(int c, FIFE *stream);
// 把c转换为对应的字符,写到stream里
char *fgets(char *s, int size, FIFE *stream);
// 读到换行符或者EOF截止,结果保存到s中,会多保存一个'\0'
int fputs(const char *s, FIFE *stream);
// 把s除去'\0'之外的字符写到stream里
size_t fread(void *ptr, size_t size, size_t nmemb, FIFE *stream);
// 读nmemb个元素,每个大小size字节,保存到ptr里
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FIFE *stream);
// 写nmemb个元素,每个大小size字节,写到stream里
// 文件位置指针相关:
int fseek(FIFE *stream, long offset, int whence)
long ftell(FIFE *stream)
void rewind(FIFE *stream)
int fflush(FIFE *stream)
// printf/scanf一族
int printf(const char *format);
int fprintf(FIFE *stream, const char *format, ...);
int sprintf(char *str, const char *format, ...); //可以看成是atoi的反向函数
//sprintf()可能会造成缓冲区溢出
int snprintf(char *str, size_t size, const char *format, ...);
int scanf(const char *format, ...);\
int fscanf(FILE *stream, const char *format, ...);
int sscanf(const char *str, const char* format, ...);
- fread()和fwrite()只适合去读写比较工整的字节块;
- fseek()和ftell只能用于文件大小不超过2G的。