1、函数声明
size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
讯享网
2、参数说明
- buffer
指向要写入的数据的指针。 - size
项大小(以字节为单位)。 - count
要写入的项的最大数量。 - stream
指向 FILE 结构的指针。
3、返回值
fwrite 返回实际写入的整个项的数量,如果发生错误,则该数量可能会小于 count。 此外,如果发生错误,则无法确定文件位置指示器。 如果 stream 或 buffer 是空指针,或者如果在 Unicode 模式下指定了要写入的奇数个字节,则该函数将调用的参数处理程序无效,如参数验证中所述。 如果允许执行继续,则该函数将 errno 设置为 EINVAL 并返回 0。
4、备注
fwrite 函数最多将 count 个项从 buffer 写入到输出 stream,每个项的长度为 size。 与 stream 相关联的文件指针(如果存在)以实际写入的字节数为增量进行递增。 如果在文本模式下打开 stream,则会将每个换行符替换为回车符 – 换行符对。 该替换不会影响返回值。
当在 Unicode 转换模式下打开 stream 时(例如,通过调用 fopen 并使用包含 ccs=UNICODE、ccs=UTF-16LE 或 ccs=UTF-8 的模式参数打开 stream 时,或者通过使用 _setmode 和包含 _O_WTEXT、_O_U16TEXT 或 _O_U8TEXT 的模式参数将该模式更改为 Unicode 转换模式时),会将 buffer 解释为指向包含 UTF-16 数据的 wchar_t 数组的指针。 尝试在此模式下写入奇数个字节会导致参数验证错误。
因为此函数会锁定调用线程,因此它是线程安全的。 有关非锁定版本,请参阅 _fwrite_nolock。
5、头文件要求
| 函数 |
必需的标头 |
|---|---|
| fwrite |
<stdio.h> |
6、实例
讯享网// crt_fread.c // This program opens a file named FREAD.OUT and // writes 25 characters to the file. It then tries to open // FREAD.OUT and read in 25 characters. If the attempt succeeds, // the program displays the number of actual items read. #include <stdio.h> int main(void) { FILE* stream; char list[30]; int i, numread, numwritten; // Open file in text mode: if (fopen_s(&stream, "fread_test.txt", "w+t") == 0) { for (i = 0; i < 25; i++) list[i] = (char)('z' - i); // list[i] = (char)( i); // Write 25 characters to stream numwritten = fwrite(list, sizeof(char), 25, stream); printf("Wrote %d items\n", numwritten); fclose(stream); } else printf("Problem opening the file\n"); if (fopen_s(&stream, "fread.out", "r+t") == 0) { // Attempt to read in 25 characters numread = fread(list, sizeof(char), 25, stream); printf("Number of items read = %d\n", numread); printf("Contents of buffer = %.25s\n", list); fclose(stream); } else printf("File could not be opened\n"); }
运行结果:在fread_test.txt文件中写入如下数据

如果写入的数量超过sizeof(buffer),将会向文件中写入乱码,示例如下:
numwritten = fwrite(list, sizeof(char), 80, stream);


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/59098.html