C语言fwrite()函数:向文件流中写入数据
头文件:#include <stdio.h>
fwrite()函数以二进制方式向文件流中写入数据,其原型为:
size_t fwrite(void * buffer, size_t size, size_t count, FILE * stream);
【参数】buffer为数据源地址,size为每个单元的字节数,count为单元个数,stream为文件流指针。
fwrite()函数每次向stream中写入count个单元,每个单元大小为size个字节;文件流的位置指针后移 size * count 字节。
【返回值】返回成功写入的单元个数。如果小于count,则说明发生了错误,文件流错误标志位将被设置,随后可以通过ferror()函数判断。
如果 size 或 count 的值为 0,则返回值为 0,并且文件流的位置指针保持不变。
与fwrite()相对应的函数为fread(),fread() 和 fwrite() 一般用于二进制文件的输入输出,ASCII文件还是不要考虑了。
【实例】最简单的一个例子,向打开的文件中写入数据。
又如,获取一个文件的字符个数。
Wrote 25 items
本示例代码首先使用fopen()创建并打开 fread.out 文件,如果成功打开则使用for循环生成25个字符。
fwrite()函数以二进制方式向文件流中写入数据,其原型为:
size_t fwrite(void * buffer, size_t size, size_t count, FILE * stream);
【参数】buffer为数据源地址,size为每个单元的字节数,count为单元个数,stream为文件流指针。
fwrite()函数每次向stream中写入count个单元,每个单元大小为size个字节;文件流的位置指针后移 size * count 字节。
【返回值】返回成功写入的单元个数。如果小于count,则说明发生了错误,文件流错误标志位将被设置,随后可以通过ferror()函数判断。
如果 size 或 count 的值为 0,则返回值为 0,并且文件流的位置指针保持不变。
与fwrite()相对应的函数为fread(),fread() 和 fwrite() 一般用于二进制文件的输入输出,ASCII文件还是不要考虑了。
【实例】最简单的一个例子,向打开的文件中写入数据。
#include <stdio.h> int main () { FILE * pFile; char buffer[] = { 'x' , 'y' , 'z' }; pFile = fopen ("myfile.bin", "wb"); fwrite (buffer , sizeof(char), sizeof(buffer), pFile); fclose (pFile); return 0; }运行程序,myfile.bin 被创建,buffer 的内容被写入。简单起见,这里的 buffer 仅包含字符,实际上它可以包含任何类型的数据。sizeof() 可以获取 buffer 的长度(以字节为单位)。
又如,获取一个文件的字符个数。
#include <stdio.h> void main( void ) { FILE *stream; char list[30]; int i, numwritten; // 以文本方式打开文件 if( (stream = fopen( "fread.out", "w+t" )) != NULL )// 文件写数据 { for ( i = 0; i < 25; i++ ) { list[i] = (char)('z' - i); } numwritten = fwrite( list, sizeof( char ), 25, stream ); printf( "Wrote %d items\n", numwritten ); fclose( stream ); } else { printf( "Problem opening the file\n" ); } return; }运行结果:
Wrote 25 items
本示例代码首先使用fopen()创建并打开 fread.out 文件,如果成功打开则使用for循环生成25个字符。