文件的操作—c program

    前几天因为工作的缘故学习了下c语言对文件操作的一些常用函数,主要涉及到的函数有fopen,fseek,fwrite,fread,fclose和feof,下面我打算具体陈述下我对这几个函数用法的理解。

    fopen函数
    作用:打开一个文件,成功返回指向该流的文件指针,失败返回NULL    
    原型:FILE *fopen(const char *path, const char *mode);  其中path是文件的路径(绝对路径);mode是流形态;常用的流形态有  r(以只读的方式打开,且文件必须存在),rb+(读写打开一个二进制文件),w(以只写的方式打开文件,若文件存在则清零重新写入,不存在则建立),a(以追加只写的方式打开文件,若文件存在则写入的数据加在原来的尾部,没有则建立)等。

    fseek函数
    作用:重新定位流(数据流/文件)内部的文件指针,函数执行成功返回0,失败返回-1
    原型:int fseek(FILE *pfile, long offset, int fromwhere);其中fromwhere设定从哪个位置开始偏移(通常取值有三种 SEEK_SET:文件开头;SEEK_CUR:当前位置;SEEK_END:文件结尾);offset即偏移量。

    fwrite和fread函数
    作用:向文件 写/读 数据块,成功返回实际写入数据项个数(或读出的数据项个数)
    原型:size_t fwrite (const void *buf, size_t  size, size_t count, FILE *pfile);
             size_t fread (const void *buf,  size_t size,  size_t count, FILE *pfile);其中size的单位是字节,count为需要写/读size大小的次数;buf是准备输入的数据块的地址(或存储读出来数据块的地址)。

    fprintf函数
    作用:将格式化的数据写入文件,执行成功返回写入的字符数,失败则返回一个负数(此函数和fwrite类似,但是区别还是很大,有待进一步研究,还要注意和sprintf的区别)
    原型:int fprintf(FILE *pfile, const char *format, [argument]);  参数的具体用法见文章后面给出的实例更有利于理解。

    feof函数就是判断是否到了文件的末尾,原型int feof (FILE * pfile);遇到文件结束则返回非0值,否则返回0;fclose就是关闭文件,原型为int fclose (FILE *pfile);关闭成功返回0,否则返回非0;

结合上面的介绍,我写了一段代码,涵盖了上面大部分函数:

void file_oper()
{
	FILE * pfile = NULL;
	char *str_write = "hangzhou\n";
	char str_read[] = "";
	
	int count = 1;
	int year = 2012;
	
	pfile = fopen("test.txt", "w+");
	if(NULL == pfile)
	{
		printf("open file failure!\n");
		return;
	}
	
	fwrite(str_write, strlen(str_write), count, pfile);
	fprintf(pfile, "huawei %d", year);
	fseek(pfile, 0, SEEK_SET);
	fread(str_read, 8, 1, pfile);
	str_read[8] = '\0';
	printf("%s\n", str_read);
	
	if(NULL != pfile)
	{
		fclose(pfile);
	}
}

代码的执行结果:

hangzhou

在工程文件夹下创建了文件test.txt,文件里面的内容如下:

你可能感兴趣的:(文件的操作—c program)