标签:
FILE* open(const char* name, const char* mode);name参数是你希望打开的文件或设备的名字。mode参数标识流用于只读、只写还是既读又写,以及它是文本流还是二进制流。下面表格里列出了一些常用的模式:
读取 | 写入 | 添加 | |
文本 | “r” | "w" | "a" |
二进制 | “rb” | “wb” | “ab” |
int fclose(FILE *f);对于输出流,fclose函数在文件关闭之前刷新缓冲区。如果它执行成功,fclose返回零值,否则返回EOF。
struct _iobuf { char *_ptr; // 下一个要被读取的字符的地址 int _cnr; // 剩余的字符 char *base; // 缓冲区基地址 int _flag; // 读写文件标志位 int _file; // 文件号 int _charbuf; // 检查缓冲区的状况 int _bufsiz; // 文件的大小 char *_tmpfname; // 临时文件名 }; typedef struct _iobuf FILE;
int fgetc(FILE *stream); int getc(FILE *stream); int getchar(void);需要操作的流作为参数传递给getc和fgetc,但是getchar始终是从标准输入读取。每个函数从流中读取下一个字符,并把它作为函数的返回值返回。如果流中不存在更多的字符,函数就返回常量值EOF(-1)。
int fputc(int character, FILE* stream); int putc(int character, FILE* stream); int putchar(int character);
int fscanf(FILE* stream, const char* format, ...); int scanf(const char* format, ...); int sscanf(const char* string, const char* format, ...);这些函数都从输入源读取字符并根据format字符串给出的格式化代码对它们进行转换。当格式化字符串到达末尾或者读取的输入不再匹配格式字符串所指定的类型时,输入就停止。在任何一种情况下,被转换的输入值的数目作为函数的返回值返回。如果在任何输入值被转换之前文件就已经到达尾部,函数就返回常量值EOF。
int fprintf(FILE *stream, const char* format, ...); int printf(const char* format, ...); int sprintf(char* buffer, const char* format, ...);
size_t fread(void* buffer, size_t size, size_t count, FILE* stream); size_t fwrite(void* buffer, size_t size, size_t count, FILE* stream);buffer是一个指向用于保存数据的内存位置的指针,size是缓冲区中每个元素的字节数,count是读取或写入的元素数,stream是数据读取或写入的流。
int fflush(FILE* stream);当我们需要立即把输出缓冲区的数据进行物理写入时,应该使用这个函数。
int fseek(FILE* stream, long offset, int from);fseek函数允许你在一个流中定位。这个操作将改变下一个读取或写入的位置。它的第一个参数是需要改变的流,它的第二个和第三个参数标识文件中需要定位的位置。下表描述了fseek参数的使用方法。
如果from是 | 你将定位到 |
SEEK_SET | 从流的起始位置起offset个字符,offset必须是一个非负值 |
SEEK_CUR | 从流的当前位置起offset个字符,offset可正可负 |
SEEK_END | 从流的尾部位置起offset个字符,offset值可正可负。为正数时,它将定位到文件尾的后面 |
标签:
原文地址:http://blog.csdn.net/wzy_1988/article/details/42386503