Skip to content

Commit 6a106bd

Browse files
authored
Merge pull request #1490 from rotarymars/master
new page: fwrite.md
2 parents 0180bdc + b0cdd5c commit 6a106bd

File tree

5 files changed

+88
-1
lines changed

5 files changed

+88
-1
lines changed

reference/cstdio.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
| [`fputc`](/reference/cstdio/fputc.md) | ファイルに1文字出力する | |
5656
| [`fputs`](/reference/cstdio/fputs.md) | ファイルにN文字出力する | |
5757
| [`fread`](/reference/cstdio/fread.md) | ファイルからN文字読み込む | |
58-
| [`fwrite`](/reference/cstdio/fwrite.md.nolink) | ファイルにN文字書き込む | |
58+
| [`fwrite`](/reference/cstdio/fwrite.md) | ファイルにN文字書き込む | |
5959
| [`fgetpos`](/reference/cstdio/fgetpos.md.nolink) | ファイルの現在位置を取得する | |
6060
| [`fseek`](/reference/cstdio/fseek.md.nolink) | ファイルの現在位置を移動する | |
6161
| [`fsetpos`](/reference/cstdio/fsetpos.md.nolink) | ファイルの現在位置を設定する | |

reference/cstdio/fgets.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ namespace std {
1616
1717
また、改行にたどり着くとそこで読み込みを終了する(末尾に改行文字を含める)。
1818
19+
## 要件
20+
- `str`は有効なポインタであること。
21+
- `stream`は有効なファイルストリームであること。
22+
- `str`が指すメモリ領域と`stream`が指すファイルストリームの内部バッファが重複していないこと。
23+
1924
## 戻り値
2025
成功すれば読み込まれた文字列を、そうでなければ`NULL`を返す。
2126

reference/cstdio/fputs.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ namespace std {
1212
## 概要
1313
ファイルに渡された文字列を出力する。
1414
15+
## 要件
16+
- `str`は有効なポインタであること。
17+
- `stream`は有効なファイルストリームであること。
18+
- `str`が指すメモリ領域と`stream`が指すファイルストリームの内部バッファが重複していないこと。
19+
1520
## 戻り値
1621
正常終了した場合は`0`を、そうでなければ[`EOF`](/reference/cstdio/eof.md)を返す。
1722

reference/cstdio/fread.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ namespace std {
1717
## 要件
1818
- `buffer`は有効なポインタであること。
1919
- `stream`は有効なファイルストリームであること。
20+
- `buffer`が指すメモリ領域と`stream`が指すファイルストリームの内部バッファが重複していないこと。
2021
2122
## 戻り値
2223
正常に読み込むことのできた項目の数を返す。

reference/cstdio/fwrite.md

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
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

Comments
 (0)