C语言函数fread() , fwrite() ,fseek()用法分析
2015-02-02 15:55
295 查看
网上已经有不少关于c语言函数fread() 和fwrite() 用法分析的文章,在此将这两个函数的用法写下来,是为了巩固所学,加深印象,也为了日后方便查询复习比较,如果能帮助到某些朋友,则是意外的惊喜。
fwrite()函数的意义是将某二进制数据写到指定的 文件流。函数的原型为:
size_t fwrite (const void *buffer, size_t size, size_t num, FILE *stream)
四个函数参数的意义分别为:1、const void *buffer 为指向二进制数据来源的指针;2、size_t size 为每个数据单元所占的字节数;
3、size_t num 为需要读取的数据单元的个数; 4、FILE *stream 为目的文件指针。
返回值为实际写入目的文件的数据单元个数。 范例如下:
函数fseek()的原型是:int fseek(FILE *stream, long offset, int fromwhere)
后两个参数的意义分别为:
1、long offset 为偏移量,正数表示正向偏移(向尾部偏移),负数表示负向偏移(向首部偏移);
2、int fromwhere 为偏移的起始点,对于fromwhere ,函数fseek定义了三个位置,对应如下:
SEEK_SET(对应 0):文件开头;
SEEK_CUR(对应 1):文件指针所指当前位置;
SEEK_END(对应2):文件结尾;
FILE
*fp;
fseek(fp,
0, SEEK_SET); //!< 指针定位文件首部
fseek(fp,
100, SEEK_CUR); //!< 指针定位离当前位置100个字节的地方
fseek(fp,
-100, SEEK_END); //!< 指针定位离文件末尾100个字节(文件首部方向)的地方
3、返回值: 如果函数执行成功,FILE *stream将指向以fromwhere 为起始点,偏移offset个字节的位置,返回返回0。若函数执行失败(比如offset超过了文件自身的大小),则不改变stream指向的位置,返回非0值。
若文件偏移超出了文件末尾位置,还是返回0,;若往回偏移超出了文件首部,返回-1,。
函数fread() 的原型是:size_t fread( void *buffer, size_t size, size_t num,FILE *stream)
四个参数的意义可参考fwrite()。稍微不同之处是:fwrite()是将数据从*buffer 写到 FILE *stream;而fread()是将数据从
FILE *stream写到*buffer,是一个相反的过程。范例如下:
fwrite()函数的意义是将某二进制数据写到指定的 文件流。函数的原型为:
size_t fwrite (const void *buffer, size_t size, size_t num, FILE *stream)
四个函数参数的意义分别为:1、const void *buffer 为指向二进制数据来源的指针;2、size_t size 为每个数据单元所占的字节数;
3、size_t num 为需要读取的数据单元的个数; 4、FILE *stream 为目的文件指针。
返回值为实际写入目的文件的数据单元个数。 范例如下:
#include <stdio.h> #include <stdlib.h> void main() { FILE *lb; char a[] = "Time is fast"; if (NULL == (lb = fopen("test.txt", "w+"))) //!<打开文件 { printf("Fail to open the file"); exit(EXIT_FAILURE); } fwrite( a, sizeof(a), 1, lb); //!<把a中数据写入文件lb fclose(lb); return ; }
函数fseek()的原型是:int fseek(FILE *stream, long offset, int fromwhere)
后两个参数的意义分别为:
1、long offset 为偏移量,正数表示正向偏移(向尾部偏移),负数表示负向偏移(向首部偏移);
2、int fromwhere 为偏移的起始点,对于fromwhere ,函数fseek定义了三个位置,对应如下:
SEEK_SET(对应 0):文件开头;
SEEK_CUR(对应 1):文件指针所指当前位置;
SEEK_END(对应2):文件结尾;
FILE
*fp;
fseek(fp,
0, SEEK_SET); //!< 指针定位文件首部
fseek(fp,
100, SEEK_CUR); //!< 指针定位离当前位置100个字节的地方
fseek(fp,
-100, SEEK_END); //!< 指针定位离文件末尾100个字节(文件首部方向)的地方
3、返回值: 如果函数执行成功,FILE *stream将指向以fromwhere 为起始点,偏移offset个字节的位置,返回返回0。若函数执行失败(比如offset超过了文件自身的大小),则不改变stream指向的位置,返回非0值。
若文件偏移超出了文件末尾位置,还是返回0,;若往回偏移超出了文件首部,返回-1,。
函数fread() 的原型是:size_t fread( void *buffer, size_t size, size_t num,FILE *stream)
四个参数的意义可参考fwrite()。稍微不同之处是:fwrite()是将数据从*buffer 写到 FILE *stream;而fread()是将数据从
FILE *stream写到*buffer,是一个相反的过程。范例如下:
#include <stdio.h> #include <stdlib.h> void main() { FILE *lb; char a[] = "Time is fast"; char b[20]; if (NULL == (lb = fopen("test.txt", "w+"))) //!<打开文件 { printf("Fail to open the file"); exit(EXIT_FAILURE); } fwrite( a, sizeof(a), 1, lb); //!<把a中数据写入文件lb fseek(lb, 0, SEEK_SET); //!<把指针lb定位到文件初始位置 fread(b, sizeof(a), 1, lb); //!<从lb指向的地址开始将一定长度数据写到b printf("a[] = %s\n", a); printf("b[] = %s\n", b); fclose(lb); return ; }
相关文章推荐
- fseek fread()和fwrite()函数分析
- fopen、fread、fwrite、fclose、fseek、feof、ftell的用法简介
- C++文件操作——fopen/fseek/ftell/fread/fwrite/fclose等函数用法
- fread,fwrite,fopen,fclose ,fseek用法
- fseek fread fwrite fgetc fgets的用法
- C文件操作——fopen/fseek/ftell/fread/fwrite/fclose等函数用法
- C语言中fread(),fwrite(),fseek()用法和功能
- fopen、fclose、feof、fputc、fgetc、fread、fwrite、ftell、fseek、fscanf函数的用法
- c库 文件操作----fopen fread fwrite fseek fclose
- C++文件读写函数之——fopen、fread和fwrite、fgetc和fputc、fgets和fputs、ftellf和fseek、rewind
- c语言中所有文件操作函数详解fopen、fwrite、fread、fgetc、fputc、fscanf、fprintf、ftell、fseek等函数
- C++之函数fgets和fputs、fread和fwrite、fscanf和fprintf用法小结
- fread和fwrite用法详解
- 逆序存储文件(二)——使用c标准库函数fopen,fseek,fread,fwrite
- fwrite fread等函数的用法
- 文件操作函数(fread,fwrite,fseek,fopen,fclose)
- read/write和fread/fwrite 的区别及用法
- fread()和fwrite() fseek()
- 函数fgets和fputs、fread和fwrite、fscanf和fprintf用法小结
- fseek 和fread、fwrite的区别