C 方式:
FILE *fopen(const char *filename,const char *mode)
mode: r以只读方式打开文件,该件必须存在。r+以可读写方式打开文件。w 打开只写文件,若文件存在则文件长度清为0。w+打开可读写文件。 a写入加到文件尾(EOF符保留)a+(原来的EOF符不保留),b以二进制格式打开。
例FILE* fp = fopen("name.txt", "w");
fread/fwrite (const void* buffer, size_t size, size_t count, FILE* stream)
fwrite函数写到用户空间缓冲区,并未同步到文件中。可使用fflush(FILE *fp)函数同步。
fseek(FILE *stream, long offset, int fromwhere)
调整文件指针位置;fromwhere: 文件头0(SEEK_SET),当前位置1(SEEK_CUR),文件尾2(SEEK_END))
C++ fstream:
seekg/p: 设置get/put 文件指针
tellg/p: 显示文件指针位置
1.注意:fstream在文件中没有插入功能,在中间写入时,会覆盖后面的内容。
2.注意:MS中的fstream中的读写文件指针不是相互独立的。也就是说,如果读操作改变了文件指针的位置,会影响到下一步要做的写操作。
This statement can lead to some confusion as to whether the get and put pointers are independent of each other. In the Microsoft iostream library implementation of fstream, these pointers are not independent of each other. If the get pointer moves, so does the put pointer. The source code listed below demonstrates this behavior.
参考:http://support.microsoft.com/kb/104634/en-us