fopen用法: fp = fopen(filename,"w")。
fopen_s用法 :fopen_s(&fp,filename,"w")。在定义FILE * fp 之后,fopen的用法是: fp = fopen(filename,"w")。而对于fopen_s来说,还得定义另外一个变量errno_t err,然后err = fopen_s(&fp,filename,"w")。返回值的话,对于fopen来说,打开文件成功的话返回文件指针(赋值给fp),打开失败则返回NULL值;对于fopen_s来说,打开文件成功返回0,失败返回非0。
void *memset(void *s, int ch, size_t n);
函数功能:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法
int fseek(FILE *stream, long offset, int fromwhere)
函数功能:设置文件指针stream的位置
如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offset取值大于等于2*1024*1024*1024,即long的正数范围2G),则不改变stream指向的位置,函数返回一个非0值。
fseek函数和lseek函数类似,但lseek返回的是一个off_t数值,而fseek返回的是一个整型。
重定位流(数据流/文件)上的文件内部位置指针
注意:文件指针指向文件/流。位置指针指向文件内部的字节位置,随着文件的读取会移动,文件指针如果不重新赋值将不会改变或指向别的文件。
long ftell(FILE *stream);
函数功能: 用于得到文件位置指针当前位置相对于文件首的偏移字节数。在随机方式存取文件时,由于文件位置频繁的前后移动,程序不容易确定文件的当前位置。调用函数ftell()就能非常容易地确定文件的当前位置。 利用函数 ftell() 也能方便地知道一个文件的长。如以下语句序列: fseek(fp, 0L,SEEK_END); len =ftell(fp); 首先将文件的当前位置移到文件的末尾,然后调用函数ftell()获得当前位置相对于文件首的位移,该位移值等于文件所含字节数
void rewind(FILE *stream)
函数功能:是将文件内部的指针重新指向一个流的开头
fgetc用法:int fgetc(FILE *stream);。
函数功能:从文件指针stream指向的文件中读取一个字符,读取一个字节后,光标位置后移一个字节。
fputc函数格式:int fputc (int c, FILE *fp)。
函数功能: 将字符ch写到文件指针fp所指向的文件的当前写指针的位置。
size_t fread(void *ptr, size_t size, size_t count, FILE *stream)
从给定流 stream 读取数据到 ptr 所指向的数组中。size要读的每个数据项的字节数,单位是字节,count要读count个数据项,每个数据项size个字节.
size_t fread(void *ptr, size_t size, size_t count, FILE *stream)
从给定流 stream 读取数据到 ptr 所指向的数组中。size要读的每个数据项的字节数,单位是字节,count要读count个数据项,每个数据项size个字节.
size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);
返回值:返回实际写入的数据块数目
(1)buffer:是一个指针,对fwrite来说,是要获取数据的地址;
(2)size:要写入内容的单字节数;
(3)count:要进行写入size字节的数据项的个数;
(4)stream:目标文件指针;
(5)返回实际写入的数据项个数。
示例:
#include <stdio.h>
struct mystruct
{
int i;
char cha;
};
int main(void)
{
FILE *stream;
struct mystruct s;
if ((stream = fopen("TEST.txt", "wb")) == NULL) /* open file TEST.txt*/
{
fprintf(stderr, "Cannot open output file.\n");
return 1;
}
s.i = 0;
s.cha = 'A';
fwrite(&s, sizeof(s), 1, stream); /* 写的struct文件*/
fclose(stream); /*关闭文件*/
return 0;
}
函数原型:int fclose( FILE *fp );
函数功能:是关闭一个流。注意:使用fclose()函数就可以把缓冲区内最后剩余的数据输出到内核缓冲区,并释放文件指针和有关的缓冲区。
返回值:如果流成功关闭,fclose 返回 0,否则返回EOF(-1)。(如果流为NULL,而且程序可以继续执行,fclose设定error number给EINVAL,并返回EOF。