Skip to content

Commit 10a7acf

Browse files
author
cpprefjp-autoupdate
committed
update automatically
1 parent 2994f4c commit 10a7acf

6 files changed

Lines changed: 856 additions & 7130 deletions

File tree

reference/cstdio.html

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,8 @@
177177
<p class="text-right"><small>
178178
最終更新日時:
179179
<time itemprop="datePublished" class="js-local-time"
180-
datetime="2026-08-18T02:57:44+09:00">
181-
2026年08月18日 02時57分44秒 (JST)
180+
datetime="2026-08-26T10:21:20+09:00">
181+
2026年08月26日 10時21分20秒 (JST)
182182
</time>
183183
<br/>
184184
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
@@ -431,6 +431,11 @@ <h2>ファイル操作</h2>
431431
<td></td>
432432
</tr>
433433
<tr>
434+
<td><code><a href="cstdio/gets.html">gets</a></code></td>
435+
<td>標準入力から1行入力する</td>
436+
<td>C++14で削除</td>
437+
</tr>
438+
<tr>
434439
<td><code><a href="cstdio/fputc.html">fputc</a></code></td>
435440
<td>ファイルに1文字出力する</td>
436441
<td></td>

reference/cstdio/gets.html

Lines changed: 322 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,322 @@
1+
<!doctype html>
2+
<html class="cpprefjp" lang="ja" itemscope="" itemtype="http://schema.org/WebPage">
3+
<head>
4+
5+
6+
<!-- Google tag (gtag.js) -->
7+
<script async src="https://www.googletagmanager.com/gtag/js?id=G-NXNBNVBTJS"></script>
8+
<script>
9+
window.dataLayer = window.dataLayer || [];
10+
function gtag(){dataLayer.push(arguments);}
11+
gtag('js', new Date());
12+
13+
gtag('config', 'G-NXNBNVBTJS');
14+
</script>
15+
16+
17+
<meta charset="UTF-8">
18+
19+
<title>std::gets - cpprefjp C++日本語リファレンス</title>
20+
21+
<meta name="viewport" content="width=device-width,initial-scale=1">
22+
<meta name="keywords" content="
23+
C++,標準ライブラリ,リファレンス,ドキュメント,STL,std,cstdio,std,function,cpp14removed
24+
">
25+
<meta name="title" content="std::gets - cpprefjp C++日本語リファレンス" />
26+
<meta itemprop="name" content="std::gets - cpprefjp C++日本語リファレンス" />
27+
<meta property="og:title" content="std::gets - cpprefjp C++日本語リファレンス" />
28+
<meta property="og:url" content="https://cpprefjp.github.io/reference/cstdio/gets.html" />
29+
<meta property="og:site_name" content="cpprefjp - C++日本語リファレンス" />
30+
<meta property="og:type" content="article" />
31+
<meta property="og:description" content="標準入力から1行を読み込み、指定されたバッファへ格納する。" />
32+
<meta name="twitter:card" content="summary" />
33+
<meta name="twitter:title" content="std::gets - cpprefjp C++日本語リファレンス" />
34+
<meta name="twitter:url" content="https://cpprefjp.github.io/reference/cstdio/gets.html" />
35+
<meta name="twitter:description" content="標準入力から1行を読み込み、指定されたバッファへ格納する。" />
36+
37+
38+
<link rel="alternate" type="application/atom+xml" title="Atom" href="https://cpprefjp.github.io/rss.xml" />
39+
40+
41+
<link rel="apple-touch-icon" sizes="180x180" href="../../static/favicons/apple-touch-icon.png?cachebust=557cd0469f26f0f797224f46d1b6e764266f07cc">
42+
<link rel="icon" type="image/png" sizes="32x32" href="../../static/favicons/favicon-32x32.png?cachebust=557cd0469f26f0f797224f46d1b6e764266f07cc">
43+
<link rel="icon" type="image/png" sizes="16x16" href="../../static/favicons/favicon-16x16.png?cachebust=557cd0469f26f0f797224f46d1b6e764266f07cc">
44+
<link rel="manifest" href="../../manifest.json?cachebust=557cd0469f26f0f797224f46d1b6e764266f07cc">
45+
<meta name="theme-color" content="#f5f8fc">
46+
47+
<link rel="stylesheet" href="../../static/pygments/default.css?cachebust=557cd0469f26f0f797224f46d1b6e764266f07cc">
48+
<!-- <link rel="stylesheet" href="../../static/css/root.css"> -->
49+
50+
51+
52+
53+
54+
<link href="../../static/kunai/css/kunai-stage-0.css?cachebust=557cd0469f26f0f797224f46d1b6e764266f07cc" rel="stylesheet">
55+
<link href="../../static/kunai/css/kunai-stage-1.css?cachebust=557cd0469f26f0f797224f46d1b6e764266f07cc" rel="stylesheet">
56+
<link href="../../static/kunai/css/kunai-stage-2.css?cachebust=557cd0469f26f0f797224f46d1b6e764266f07cc" rel="stylesheet">
57+
<link href="../../static/kunai/css/kunai-stage-3.css?cachebust=557cd0469f26f0f797224f46d1b6e764266f07cc" rel="stylesheet">
58+
59+
<script type="text/javascript" src="../../static/kunai/js/kunai-vendor.js?cachebust=557cd0469f26f0f797224f46d1b6e764266f07cc"></script>
60+
<script type="text/javascript" src="../../static/kunai/js/kunai.js?cachebust=557cd0469f26f0f797224f46d1b6e764266f07cc"></script>
61+
62+
<script type="text/javascript">
63+
document.addEventListener('DOMContentLoaded', function() {
64+
var kn = new Kunai;
65+
kn.cpprefjp();
66+
});
67+
</script>
68+
69+
</head>
70+
<body>
71+
<header data-kunai-mdinfo="{&#34;meta&#34;: {&#34;header&#34;: [&#34;cstdio&#34;], &#34;namespace&#34;: [&#34;std&#34;], &#34;id-type&#34;: [&#34;function&#34;], &#34;cpp&#34;: [&#34;cpp14removed&#34;]}, &#34;sources&#34;: [], &#34;page_id&#34;: [&#34;reference&#34;, &#34;cstdio&#34;, &#34;gets&#34;]}">
72+
<nav class="navbar navbar-default" role="navigation">
73+
<div class="container-fluid">
74+
<div class="navbar-header">
75+
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse">
76+
<span class="sr-only">Toggle navigation</span>
77+
<span class="icon-bar"></span>
78+
<span class="icon-bar"></span>
79+
<span class="icon-bar"></span>
80+
</button>
81+
<a class="navbar-brand" href="../../index.html">
82+
<div class="title-wrapper clearfix">
83+
<div class="title">cpprefjp - C++日本語リファレンス</div>
84+
</div>
85+
</a>
86+
</div>
87+
88+
<div class="collapse navbar-collapse" id="navbar-collapse">
89+
<ul class="nav navbar-nav navbar-right">
90+
<li>
91+
<div class="google-search">
92+
93+
94+
<script>
95+
(function() {
96+
var cx = '013316413321391058734:ji_u66hl7hq';
97+
var gcse = document.createElement('script');
98+
gcse.type = 'text/javascript';
99+
gcse.async = true;
100+
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
101+
'//www.google.com/cse/cse.js?cx=' + cx;
102+
var s = document.getElementsByTagName('script')[0];
103+
s.parentNode.insertBefore(gcse, s);
104+
})();
105+
</script>
106+
<div class="gcse-search"></div>
107+
108+
109+
</div>
110+
</li>
111+
<li>
112+
<a href="https://github.com/cpprefjp/site">GitHub Project</a>
113+
</li>
114+
</ul>
115+
</div>
116+
</div>
117+
</nav>
118+
</header>
119+
120+
<main id="main" role="main">
121+
<div class="container-fluid">
122+
<div class="row">
123+
<div class="col-sm-9 col-sm-push-3" itemscope itemtype="http://schema.org/Article">
124+
<div class="row">
125+
<div class="col-sm-12 google-search-result">
126+
<gcse:searchresults></gcse:searchresults>
127+
</div>
128+
</div>
129+
<div class="row">
130+
<div class="col-sm-12 content-header">
131+
132+
<ol class="breadcrumb">
133+
134+
<li itemscope itemtype="http://www.schema.org/SiteNavigationElement">
135+
<span>
136+
137+
<a href="../../index.html" itemprop="url">
138+
139+
<i class="fa fa-fw fa-home"></i>
140+
141+
</a>
142+
143+
</span>
144+
</li>
145+
146+
<li itemscope itemtype="http://www.schema.org/SiteNavigationElement">
147+
<span>
148+
149+
<a href="../../reference.html" itemprop="url">
150+
151+
<span itemprop="name">リファレンス</span>
152+
153+
</a>
154+
155+
</span>
156+
</li>
157+
158+
<li itemscope itemtype="http://www.schema.org/SiteNavigationElement">
159+
<span>
160+
161+
<a href="../../reference/cstdio.html" itemprop="url">
162+
163+
<span itemprop="name">cstdio</span>
164+
165+
</a>
166+
167+
</span>
168+
</li>
169+
170+
<li class="active" itemscope itemtype="http://www.schema.org/SiteNavigationElement">
171+
<span>
172+
173+
174+
<span itemprop="name">gets</span>
175+
176+
177+
</span>
178+
</li>
179+
180+
</ol>
181+
<div class="crsearch"></div>
182+
183+
</div>
184+
</div>
185+
<div class="row">
186+
<div class="col-sm-12 edit-button">
187+
188+
189+
<p class="text-right"><small>
190+
最終更新日時:
191+
<time itemprop="datePublished" class="js-local-time"
192+
datetime="2026-08-26T10:21:20+09:00">
193+
2026年08月26日 10時21分20秒 (JST)
194+
</time>
195+
<br/>
196+
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
197+
<span itemprop="name">Akira Takahashi</span>
198+
</span>
199+
が更新
200+
</small></p>
201+
<script>
202+
(function () {
203+
// 最終更新日時を閲覧者のローカルタイムゾーンで表示し直す (issue #53 の正規化)。
204+
// JS が無効な環境ではサーバ生成の JST 表記がそのまま残る。
205+
function pad(n) { return (n < 10 ? '0' : '') + n; }
206+
var els = document.querySelectorAll('time.js-local-time[datetime]');
207+
for (var i = 0; i < els.length; i++) {
208+
var el = els[i];
209+
var d = new Date(el.getAttribute('datetime'));
210+
if (isNaN(d.getTime())) { continue; }
211+
var tz = '';
212+
try {
213+
var parts = new Intl.DateTimeFormat(undefined, { timeZoneName: 'short' }).formatToParts(d);
214+
for (var j = 0; j < parts.length; j++) {
215+
if (parts[j].type === 'timeZoneName') { tz = parts[j].value; break; }
216+
}
217+
} catch (e) {}
218+
el.textContent = d.getFullYear() + '年' + pad(d.getMonth() + 1) + '月' + pad(d.getDate()) + '日 '
219+
+ pad(d.getHours()) + '時' + pad(d.getMinutes()) + '分' + pad(d.getSeconds()) + '秒'
220+
+ (tz ? ' (' + tz + ')' : '');
221+
}
222+
})();
223+
</script>
224+
225+
226+
<p class="text-right">
227+
<a class="history" target="_blank" href="https://github.com/cpprefjp/site/commits/master/reference/cstdio/gets.md">
228+
<span class="fa fa-fw fa-clock-o fa-flip-horizontal"></span>履歴
229+
</a>
230+
<a class="edit" target="_blank" href="https://github.com/cpprefjp/site/edit/master/reference/cstdio/gets.md">
231+
<span class="fa fa-fw fa-pencil"></span>編集
232+
</a>
233+
</p>
234+
</div>
235+
</div>
236+
<div class="row">
237+
<div class="col-sm-12 content-body">
238+
239+
<div class="identifier-type">function</div><div class="header">&lt;cstdio&gt;</div><h1 itemprop="name"><span class="namespace" title="namespace std">std::</span><span class="token">gets</span><span class="cpp cpp14removed text-danger" title="C++14で削除">(C++14で削除)</span></h1>
240+
<div itemprop="articleBody"><p><div class="codehilite"><pre><span></span><code><span class="k">namespace</span><span class="w"> </span><span class="nn">std</span><span class="w"> </span><span class="p">{</span>
241+
<span class="w"> </span><span class="kt">char</span><span class="o">*</span><span class="w"> </span><span class="nf">gets</span><span class="p">(</span><span class="kt">char</span><span class="o">*</span><span class="w"> </span><span class="n">str</span><span class="p">);</span><span class="w"> </span><span class="c1">// (1) C++98</span>
242+
<span class="p">}</span>
243+
</code></pre></div>
244+
</p>
245+
<p>この関数はC++14で削除された。代わりに<code><a href="fgets.html">fgets()</a></code>関数を使用すること。</p>
246+
<h2>概要</h2>
247+
<p>標準入力から1行を読み込み、指定されたバッファへ格納する。</p>
248+
<p>改行文字に到達するか、終端に到達するまで文字を読み込む。読み込んだ改行文字は破棄され、バッファの末尾にはヌル文字が追加される。</p>
249+
<h2><a class="cpprefjp-defined-word" data-desc="関数等の意味論を構成する要素の1つ。Preconditions。関数呼び出し時に満たされていると関数が想定する条件。満たさなければ未定義の動作。契約属性の`[[expects]]`に相当">事前条件</a></h2>
250+
<ul>
251+
<li><code>str</code>は有効なポインタであること</li>
252+
<li><code>str</code>が指す領域が、入力される行を格納するのに十分な大きさであること</li>
253+
</ul>
254+
<h2><a class="cpprefjp-defined-word" data-desc="関数呼び出し式の評価結果となるオブジェクト・値">戻り値</a></h2>
255+
<p>成功すれば<code>str</code>を返す。1文字も読み込まずに終端に到達した場合、もしくは読み込みに失敗した場合は<code>NULL</code>を返す。</p>
256+
<h2>非推奨・削除の詳細</h2>
257+
<p>この関数は、読み込む文字数を制限する手段を持たない。そのため、入力される行が<code>str</code>の指す領域より長い場合、必ずバッファオーバーフローを引き起こす。呼び出し側でこれを防ぐ方法はないため、安全に使用することが原理的にできない。</p>
258+
<p>C言語では、C99の技術訂正TC3 (ISO/IEC 9899:1999/Cor.3:2007) の「Future library directions」において「<code>gets</code>関数は廃止予定 (obsolescent) であり、非推奨である」と規定された。続いてWG14 N1420により、C11で完全に削除された。</p>
259+
<p>C++では、C++14の各国コメント (NB comment GB9) によって削除された。C++11の時点でC++が参照していたC99には<code>gets()</code>が含まれていたが、C11から削除されたことを受けて、C++からも取り除かれたものである。あわせて<code>&lt;cstdio&gt;</code>の規定には「C++は関数<code>gets()</code>を定義しない」という注記が追加された。</p>
260+
<p>この関数の代わりとして、読み込む文字数を指定できる<code><a href="fgets.html">fgets()</a></code>関数を使用すること。ただし<code><a href="fgets.html">fgets()</a></code>関数は改行文字を破棄せずバッファへ格納する点が異なる。</p>
261+
<p><div class="codehilite"><pre><span></span><code><span class="kt">char</span><span class="w"> </span><span class="n">str</span><span class="p">[</span><span class="mi">10</span><span class="p">];</span>
262+
263+
<span class="c1">// std::gets(str); // 削除された。バッファオーバーフローを防げない</span>
264+
265+
<span class="c1">// 読み込む文字数を指定できる</span>
266+
<span class="n"><a href="fgets.html">std::fgets</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span><span class="w"> </span><span class="n">stdin</span><span class="p">);</span>
267+
</code></pre></div>
268+
</p>
269+
<h2>バージョン</h2>
270+
<h3>言語</h3>
271+
<ul>
272+
<li>C++98</li>
273+
</ul>
274+
<h2>関連項目</h2>
275+
<ul>
276+
<li><code><a href="fgets.html">fgets</a></code></li>
277+
<li><code><a href="puts.html">puts</a></code></li>
278+
<li><code><a href="../string/basic_string/getline.html">std::getline</a></code></li>
279+
</ul>
280+
<h2>参照</h2>
281+
<ul>
282+
<li><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf" target="_blank">WG14 N1256 ISO/IEC 9899:TC3</a><ul>
283+
<li>C99に技術訂正TC1・TC2・TC3を適用した文書。§7.26.9で<code>gets</code>関数が廃止予定 (obsolescent) かつ非推奨であると規定された</li>
284+
</ul>
285+
</li>
286+
<li><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1420.htm" target="_blank">WG14 N1420 On The Removal of <code>gets()</code></a><ul>
287+
<li>C言語側で<code>gets</code>を削除する提案文書。TC3で廃止予定とされていたこの関数を、C11で完全に削除した</li>
288+
</ul>
289+
</li>
290+
<li><a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3733.pdf" target="_blank">N3733 ISO/IEC CD 14882, C++ 2014, National Body Comments</a><ul>
291+
<li>C++14に対する各国コメント。GB9として<code>gets</code>の削除が提起された</li>
292+
</ul>
293+
</li>
294+
<li><a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3956.pdf" target="_blank">N3956 ISO/IEC CD 14882, C++ 2014, Responses to National Body Comments</a><ul>
295+
<li>GB9への回答。C++14で<code>gets</code><code>&lt;cstdio&gt;</code><code>&lt;stdio.h&gt;</code>の一覧表から削除し、「C++は関数<code>gets</code>を定義しない」旨の注記を追加することが承認された</li>
296+
</ul>
297+
</li>
298+
</ul></div>
299+
300+
</div>
301+
</div>
302+
</div>
303+
304+
305+
<div id="sidebar" class="col-sm-3 col-sm-pull-9">
306+
</div>
307+
308+
309+
</div>
310+
</div>
311+
</main>
312+
<footer class="footer navbar navbar-default">
313+
<div class="container-fluid">
314+
<p><small>
315+
本サイトの情報は、
316+
<a href="https://creativecommons.org/licenses/by/4.0/deed.ja" rel="nofollow">クリエイティブ・コモンズ 表示 4.0 非移植 ライセンス(CC BY)</a>
317+
の下に提供されています。
318+
</small></p>
319+
</div>
320+
</footer>
321+
</body>
322+
</html>

0 commit comments

Comments
 (0)