|
| 1 | +# fwrite |
| 2 | +* cstdio[meta header] |
| 3 | +* std[meta namespace] |
| 4 | +* function[meta id-type] |
| 5 | + |
| 6 | +```cpp |
| 7 | +namespace std { |
| 8 | + size_t fwrite(const void *buffer, size_t size, size_t count, FILE *stream); |
| 9 | +} |
| 10 | +``` |
| 11 | +
|
| 12 | +## 概要 |
| 13 | +ストリームに`count`個の`size`バイトの要素を書き込む。 |
| 14 | +
|
| 15 | +ストリーム内の位置は、書き込まれたバイトだけ進む。 |
| 16 | +
|
| 17 | +書き込み時にエラーが発生した場合、ストリーム内の位置は不定である。 |
| 18 | +
|
| 19 | +また、書き込みには内部的に[`fputc`](/reference/cstdio/fputc.md)を使用する。 |
| 20 | +
|
| 21 | +## 要件 |
| 22 | +- `buffer`は有効なポインタであること。 |
| 23 | +- `stream`は有効なファイルストリームであること。 |
| 24 | +- `buffer`が指すメモリ領域と`stream`が指すファイルストリームの内部バッファが重複していないこと。 |
| 25 | +
|
| 26 | +## 戻り値 |
| 27 | +正常に書き込むことのできた要素の数を返す。 |
| 28 | +
|
| 29 | +## 効果 |
| 30 | +`buffer`が指すメモリから`count`個の`size`バイトの要素を`stream`に書き込む。 |
| 31 | +
|
| 32 | +書き込みエラーが生じなければ、書き込むデータの大きさは`count * size`バイトである。 |
| 33 | +
|
| 34 | +## 例 |
| 35 | +```cpp example |
| 36 | +#include <cstdio> |
| 37 | +
|
| 38 | +int main() { |
| 39 | + std::FILE *file = std::fopen("output.txt", "w"); |
| 40 | + if (!file) { |
| 41 | + std::perror("ファイルを開けませんでした"); |
| 42 | + return 1; |
| 43 | + } |
| 44 | +
|
| 45 | + const char data[] = "Hello, World!\n"; |
| 46 | + /* |
| 47 | + 厳密には、sizeof(char)は1バイトであることが保証されているため、 |
| 48 | + sizeof(data) - 1は、文字列の長さ(ヌル終端文字を除く)と等しくなる。 |
| 49 | + */ |
| 50 | + std::size_t count = std::fwrite(data, sizeof(char), sizeof(data) - 1, file); |
| 51 | + std::printf("書き込んだデータの長さ: %zu\n", count); |
| 52 | +
|
| 53 | + std::fclose(file); |
| 54 | + return 0; |
| 55 | +} |
| 56 | +``` |
| 57 | +* std::fwrite[color ff0000] |
| 58 | +* std::fopen[link /reference/cstdio/fopen.md] |
| 59 | +* std::fclose[link /reference/cstdio/fclose.md] |
| 60 | +* std::perror[link /reference/cstdio/perror.md.nolink] |
| 61 | +* std::printf[link /reference/cstdio/printf.md] |
| 62 | + |
| 63 | +### 出力例 |
| 64 | +``` |
| 65 | +書き込んだデータの長さ: 13 |
| 66 | +``` |
| 67 | + |
| 68 | +### ファイル出力(output.txt) |
| 69 | +``` |
| 70 | +Hello, World! |
| 71 | +``` |
| 72 | + |
| 73 | +## 処理系 |
| 74 | +- [Clang](/implementation.md#clang): ?? |
| 75 | +- [GCC](/implementation.md#gcc): ?? |
| 76 | +- [Visual C++](/implementation.md#visual_cpp): ?? |
0 commit comments