上传cppreference
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 2.7 KiB |
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,148 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>C11</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_11 skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">C11</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<p><b>ISO/IEC 9899:2011</b> ,又称 <b>C11</b> ,是先前的 C 标准版本。</p>
|
||||
<h2><span class="mw-headline" id=".E8.BF.87.E6.97.B6">过时</span></h2>
|
||||
<h3><span class="mw-headline" id=".E7.A7.BB.E9.99.A4">移除</span></h3>
|
||||
<ul>
|
||||
<li><span class="t-lc"><a href="c-io-gets.html">gets()</a></span></li>
|
||||
</ul>
|
||||
<h2><span class="mw-headline" id=".E6.96.B0.E8.AF.AD.E8.A8.80.E7.89.B9.E6.80.A7">新语言特性</span></h2>
|
||||
<ul>
|
||||
<li>多线程环境
|
||||
<ul>
|
||||
<li><a href="c-language-atomic.html">原子对象</a>(<a href="c-keyword-_Atomic.html"><tt>_Atomic</tt></a>)</li>
|
||||
<li><a href="c-language-storage_duration.html#.E5.AD.98.E5.82.A8.E6.9C.9F">线程局部存储</a>(<a href="c-keyword-_Thread_local.html"><tt>_Thread_local</tt></a>)</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>增强的对齐支持
|
||||
<ul>
|
||||
<li><a href="c-language-_Alignof.html">对齐查询</a>(<a href="c-keyword-_Alignof.html"><tt>_Alignof</tt></a>)</li>
|
||||
<li><a href="c-language-_Alignas.html">对齐强化</a>(<a href="c-keyword-_Alignas.html"><tt>_Alignas</tt></a>)</li>
|
||||
<li>过对齐类型</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Unicode 支持
|
||||
<ul>
|
||||
<li><a href="c-language-character_constant.html"><code>u</code>/<code>U</code> 字符常量</a></li>
|
||||
<li><a href="c-language-string_literal.html"><code>u8</code>/<code>u</code>/<code>U</code> 字符串字面量</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="c-language-generic.html">泛型选择表达式</a>(<a href="c-keyword-_Generic.html"><tt>_Generic</tt></a>)</li>
|
||||
<li><a href="c-language-_Noreturn.html">不返回的函数</a>(<a href="c-keyword-_Noreturn.html"><tt>_Noreturn</tt></a>)</li>
|
||||
<li>匿名<a href="c-language-struct.html">结构体</a>与<a href="c-language-union.html">联合体</a>成员</li>
|
||||
<li>细粒度的<a href="c-language-eval_order.html">求值顺序</a></li>
|
||||
<li>延长<a href="c-language-lifetime.html#.E4.B8.B4.E6.97.B6.E7.94.9F.E5.AD.98.E6.9C.9F">临时对象</a>生存期</li>
|
||||
<li><a href="c-language-_Static_assert.html"><tt>_Static_assert</tt></a></li>
|
||||
<li><a href="c-language-analyzability.html">可分析性</a></li>
|
||||
</ul>
|
||||
<h3><span class="mw-headline" id=".E5.8F.AF.E9.80.89.E7.89.B9.E6.80.A7.E7.9A.84.E5.8A.9F.E8.83.BD.E7.89.B9.E6.80.A7.E6.B5.8B.E8.AF.95.E5.AE.8F">可选特性的功能特性测试宏</span></h3>
|
||||
<ul>
|
||||
<li><a href="c-preprocessor-replace.html"><tt>__STDC_ANALYZABLE__</tt></a>
|
||||
<ul>
|
||||
<li>指示支持可分析性。</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="c-preprocessor-replace.html"><tt>__STDC_LIB_EXT1__</tt></a>
|
||||
<ul>
|
||||
<li>指示支持边界检查函数。</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="c-preprocessor-replace.html"><tt>__STDC_NO_ATOMICS__</tt></a>
|
||||
<ul>
|
||||
<li>指示不支持原子对象与原子操作库。</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="c-preprocessor-replace.html"><tt>__STDC_NO_COMPLEX__</tt></a>
|
||||
<ul>
|
||||
<li>指示不支持复数类型与复数数学函数。</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>这些特性在 C99 中为强制。</dd>
|
||||
</dl>
|
||||
</li>
|
||||
<li><a href="c-preprocessor-replace.html"><tt>__STDC_NO_THREADS__</tt></a>
|
||||
<ul>
|
||||
<li>指示不支持线程局部存储与线程支持库。</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="c-preprocessor-replace.html"><tt>__STDC_NO_VLA__</tt></a>
|
||||
<ul>
|
||||
<li>指示不支持<a href="c-language-array.html#.E9.9D.9E.E5.B8.B8.E9.87.8F.E9.95.BF.E5.BA.A6.E6.95.B0.E7.BB.84">非常量长度数组与可变修改类型</a>。</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>这些特性在 C99 中为强制。</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<h2><span class="mw-headline" id=".E6.96.B0.E7.9A.84.E5.BA.93.E7.89.B9.E6.80.A7">新的库特性</span></h2>
|
||||
<h3><span class="mw-headline" id=".E6.96.B0.E7.9A.84.E5.A4.B4.E6.96.87.E4.BB.B6">新的头文件</span></h3>
|
||||
<ul>
|
||||
<li><code><stdalign.h></code></li>
|
||||
<li><code><stdatomic.h></code></li>
|
||||
<li><code><stdnoreturn.h></code></li>
|
||||
<li><code><threads.h></code></li>
|
||||
<li><code><uchar.h></code></li>
|
||||
</ul>
|
||||
<h3><span class="mw-headline" id=".E5.BA.93.E7.89.B9.E6.80.A7">库特性</span></h3>
|
||||
<ul>
|
||||
<li>多线程环境
|
||||
<ul>
|
||||
<li><a href="c-atomic.html">原子操作库</a></li>
|
||||
<li><a href="c-thread.html">线程支持库</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="c-memory-aligned_alloc.html"><tt>aligned_alloc()</tt></a></li>
|
||||
<li>UTF-16/32 类型别名
|
||||
<ul>
|
||||
<li><a href="c-string-multibyte-char16_t.html"><tt>char16_t</tt></a></li>
|
||||
<li><a href="c-string-multibyte-char32_t.html"><tt>char32_t</tt></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>UTF-16/32 转换函数
|
||||
<ul>
|
||||
<li><span class="t-lc"><a href="c-string-multibyte-mbrtoc16.html">mbrtoc16()</a></span></li>
|
||||
<li><span class="t-lc"><a href="c-string-multibyte-mbrtoc32.html">mbrtoc32()</a></span></li>
|
||||
<li><span class="t-lc"><a href="c-string-multibyte-c16rtomb.html">c16rtomb()</a></span></li>
|
||||
<li><span class="t-lc"><a href="c-string-multibyte-c32rtomb.html">c32rtomb()</a></span></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><span class="t-lc"><a href="c-program-quick_exit.html">quick_exit()</a></span></li>
|
||||
<li><span class="t-lc"><a href="c-program-at_quick_exit.html">at_quick_exit()</a></span></li>
|
||||
<li><span class="t-lc"><a href="c-io-fopen.html">fopen()</a></span> 与 <span class="t-lc"><a href="c-io-freopen.html">freopen()</a></span> 的排他模式(<span class="t-c"><span class="mw-geshi c source-c"><span class="st0">"x"</span></span></span>)</li>
|
||||
<li><a href="c-error.html#.E8.BE.B9.E7.95.8C.E6.A3.80.E6.9F.A5.E5.87.BD.E6.95.B0">边界检查函数</a></li>
|
||||
<li><a href="c-chrono-timespec.html"><tt>timespec</tt></a></li>
|
||||
<li><a href="c-chrono-timespec_get.html"><tt>timespec_get()</tt></a></li>
|
||||
<li><a href="c-numeric-complex-CMPLX.html"><tt>CMPLX(F|L)?</tt></a></li>
|
||||
<li>新的数值界限宏
|
||||
<ul>
|
||||
<li><a href="c-types-limits.html"><tt>(FLT|DBL|LDBL)_DECIMAL_DIG</tt></a></li>
|
||||
<li><a href="c-types-limits.html"><tt>(FLT|DBL|LDBL)_TRUE_MIN</tt></a></li>
|
||||
<li><a href="c-types-limits.html"><tt>(FLT|DBL|LDBL)_HAS_SUBNORM</tt></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>线程局部的 <span class="t-lc"><a href="c-error-errno.html">errno</a></span></li>
|
||||
</ul>
|
||||
<h2><span class="mw-headline" id=".E7.BC.BA.E9.99.B7.E6.8A.A5.E5.91.8A">缺陷报告</span></h2>
|
||||
<p><a href="https://zh.cppreference.com/mwiki/index.php?title=Template:c/language/history/DR11&action=edit&redlink=1" class="new" title="Template:c/language/history/DR11(页面不存在)">Template:c/language/history/DR11</a></p>
|
||||
<h2><span class="mw-headline" id=".E7.BC.96.E8.AF.91.E5.99.A8.E6.94.AF.E6.8C.81">编译器支持</span></h2>
|
||||
<p><a href="https://zh.cppreference.com/mwiki/index.php?title=Template:c/compiler_support/11&action=edit&redlink=1" class="new" title="Template:c/compiler support/11(页面不存在)">Template:c/compiler support/11</a></p>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,100 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>C17</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_17 skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">C17</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<p><b>ISO/IEC 9899:2018</b> ,又称 <b>C17</b>/<b>C18</b> (分别代表完成和出版的年份),是 C 标准的当前版本。</p>
|
||||
<p>C17 与 C11 相同,除了它将 <a href="c-preprocessor-replace.html"><tt>__STDC_VERSION__</tt></a> 预定义宏更新到 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">201710L</span></span></span> ,含有数个缺陷报告,以及弃用了一些特性。</p>
|
||||
<h2><span class="mw-headline" id=".E8.BF.87.E6.97.B6">过时</span></h2>
|
||||
<h3><span class="mw-headline" id=".E5.BC.83.E7.94.A8">弃用</span></h3>
|
||||
<ul>
|
||||
<li><span class="t-lc"><a href="c-atomic-ATOMIC_VAR_INIT.html">ATOMIC_VAR_INIT</a></span></li>
|
||||
<li>对以零大小调用 <a href="c-memory-realloc.html"><tt>realloc()</tt></a> 的支持</li>
|
||||
</ul>
|
||||
<h2><span class="mw-headline" id=".E7.BC.BA.E9.99.B7.E6.8A.A5.E5.91.8A">缺陷报告</span></h2>
|
||||
<div style="margin-left:0px">
|
||||
<table class="mw-collapsible mw-collapsed" style="background: transparent; text-align: left; border: 1px solid silver; margin: 0.2em auto auto; width:100%; clear: both; padding: 1px;">
|
||||
<tr>
|
||||
<th style="background: #F0F2F5; font-size:87%; padding:0.2em 0.3em; text-align:center;"><span style="font-size:115%">C17 中修正的缺陷报告( 54 个缺陷)</span></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="border: solid 1px silver; padding: 8px; background: white;">
|
||||
<div class="div-col columns column-count column-count-6" style="-moz-column-count: 6; -webkit-column-count: 6; column-count: 6;">
|
||||
<ul>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_400">DR 400</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_401">DR 401</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_402">DR 402</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_403">DR 403</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_404">DR 404</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_405">DR 405</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_406">DR 406</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_407">DR 407</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_410">DR 410</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_412">DR 412</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_414">DR 414</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_415">DR 415</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_416">DR 416</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_417">DR 417</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_419">DR 419</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_423">DR 423</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_426">DR 426</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_428">DR 428</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_429">DR 429</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_430">DR 430</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_431">DR 431</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_433">DR 433</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_434">DR 434</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_436">DR 436</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_437">DR 437</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_438">DR 438</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_439">DR 439</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_441">DR 441</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_444">DR 444</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_445">DR 445</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_447">DR 447</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_448">DR 448</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_450">DR 450</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_452">DR 452</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_453">DR 453</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_457">DR 457</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_458">DR 458</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_459">DR 459</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_460">DR 460</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_462">DR 462</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_464">DR 464</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_465">DR 465</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_468">DR 468</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_470">DR 470</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_471">DR 471</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_472">DR 472</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_473">DR 473</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_475">DR 475</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_477">DR 477</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_480">DR 480</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_481">DR 481</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_485">DR 485</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_487">DR 487</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_491">DR 491</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,200 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>C23</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_23 skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">C23</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<p>下一代 C 标准。</p>
|
||||
<p>参见:<a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2864.pdf">当前的 C23 国际标准日程</a>。</p>
|
||||
<table class="metadata plainlinks ambox mbox-small-left ambox-notice" style="">
|
||||
<tr>
|
||||
<td class="mbox-empty-cell"></td>
|
||||
<td class="mbox-text" style="">本节未完成</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2><span class="mw-headline" id=".E8.BF.87.E6.97.B6">过时</span></h2>
|
||||
<h3><span class="mw-headline" id=".E7.A7.BB.E9.99.A4">移除</span></h3>
|
||||
<ul>
|
||||
<li>补码以外的<a href="c-language-arithmetic_types.html">有符号整数</a>表示</li>
|
||||
<li>旧式<a href="c-language-function_definition.html">函数定义</a></li>
|
||||
<li>混合宽<a href="c-language-string_literal.html">字符串字面量</a>拼接</li>
|
||||
<li>对以零大小调用 <a href="c-memory-realloc.html"><tt>realloc()</tt></a> 的支持(行为变为未定义)</li>
|
||||
</ul>
|
||||
<h3><span class="mw-headline" id=".E5.BC.83.E7.94.A8">弃用</span></h3>
|
||||
<ul>
|
||||
<li>旧功能特性测试宏
|
||||
<ul>
|
||||
<li><a href="c-preprocessor-replace.html"><tt>__STDC_IEC_559__</tt></a></li>
|
||||
<li><a href="c-preprocessor-replace.html"><tt>__STDC_IEC_559_COMPLEX__</tt></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="c-types-limits.html"><tt>DECIMAL_DIG</tt></a></li>
|
||||
<li>下列数值界限宏在 <code><math.h></code> 中的定义(应该经由 <code><limits.h></code> 使用它们)
|
||||
<ul>
|
||||
<li><a href="c-numeric-math.html"><tt>INFINITY</tt></a></li>
|
||||
<li><a href="c-numeric-math.html"><tt>DEC_INFINITY</tt></a></li>
|
||||
<li><a href="c-numeric-math.html"><tt>NAN</tt></a></li>
|
||||
<li><a href="c-numeric-math.html"><tt>DEC_NAN</tt></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<h2><span class="mw-headline" id=".E6.96.B0.E7.9A.84.E8.AF.AD.E8.A8.80.E7.89.B9.E6.80.A7">新的语言特性</span></h2>
|
||||
<ul>
|
||||
<li><a href="c-language-arithmetic_types.html">十进制浮点类型</a>(<a href="c-keyword-_Decimal32.html"><tt>_Decimal32</tt></a>、 <a href="c-keyword-_Decimal64.html"><tt>_Decimal64</tt></a> 及 <a href="c-keyword-_Decimal128.html"><tt>_Decimal128</tt></a>)</li>
|
||||
<li><a href="c-language-integer_constant.html">二进制整数常量</a></li>
|
||||
<li><a href="c-language-character_constant.html"><code>u8</code> 字符常量</a></li>
|
||||
<li>数位分隔符 <code>'</code></li>
|
||||
<li><a href="c-language-attributes.html">属性</a>
|
||||
<ul>
|
||||
<li><code>[[<a href="c-language-attributes-deprecated.html">deprecated</a>]]</code></li>
|
||||
<li><code>[[<a href="c-language-attributes-fallthrough.html">fallthrough</a>]]</code></li>
|
||||
<li><code>[[<a href="c-language-attributes-maybe_unused.html">maybe_unused</a>]]</code></li>
|
||||
<li><code>[[<a href="c-language-attributes-nodiscard.html">nodiscard</a>]]</code></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="c-language-function_definition.html">函数定义</a>中的无名形参</li>
|
||||
<li><a href="c-language-array.html">数组类型</a>与其元素类型的等同 cvr 限定</li>
|
||||
<li>单参数 <a href="c-language-_Static_assert.html"><tt>_Static_assert</tt></a></li>
|
||||
<li><a href="c-language-goto.html">标签</a>后随声明和 <code><b>}</b></code></li>
|
||||
<li>新预处理器指令
|
||||
<ul>
|
||||
<li><a href="c-preprocessor-conditional.html"><tt>#elifdef</tt></a></li>
|
||||
<li><a href="c-preprocessor-conditional.html"><tt>#elifndef</tt></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>舍入方向的语用
|
||||
<ul>
|
||||
<li><code>STDC</code> <a href="c-preprocessor-impl.html"><tt>FENV_ROUND</tt></a></li>
|
||||
<li><code>STDC</code> <a href="c-preprocessor-impl.html"><tt>FENV_DEC_ROUND</tt></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<h3><span class="mw-headline" id=".E5.8F.AF.E9.80.89.E7.89.B9.E6.80.A7.E7.9A.84.E5.8A.9F.E8.83.BD.E7.89.B9.E6.80.A7.E6.B5.8B.E8.AF.95.E5.AE.8F">可选特性的功能特性测试宏</span></h3>
|
||||
<ul>
|
||||
<li><a href="c-preprocessor-replace.html"><tt>__STDC_IEC_60559_BFP__</tt></a>
|
||||
<ul>
|
||||
<li>指示支持 IEEE-754 二进制浮点算术与要求的数学函数。</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>此宏取代 <a href="c-preprocessor-replace.html"><tt>__STDC_IEC_559__</tt></a> 。</dd>
|
||||
</dl>
|
||||
</li>
|
||||
<li><a href="c-preprocessor-replace.html"><tt>__STDC_IEC_60559_DFP__</tt></a>
|
||||
<ul>
|
||||
<li>指示支持 IEEE-754 十进制浮点算术与要求的数学函数。</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="c-preprocessor-replace.html"><tt>__STDC_IEC_60559_COMPLEX__</tt></a>
|
||||
<ul>
|
||||
<li>指示支持 IEEE-754 复数算术与要求的数学函数。</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>此宏取代 <a href="c-preprocessor-replace.html"><tt>__STDC_IEC_559_COMPLEX__</tt></a> 。</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<h2><span class="mw-headline" id=".E6.96.B0.E7.9A.84.E5.BA.93.E7.89.B9.E6.80.A7">新的库特性</span></h2>
|
||||
<ul>
|
||||
<li>扩展的二进制浮点数学函数
|
||||
<ul>
|
||||
<li>
|
||||
<table class="metadata plainlinks ambox mbox-small-left ambox-notice" style="">
|
||||
<tr>
|
||||
<td class="mbox-empty-cell"></td>
|
||||
<td class="mbox-text" style="">本节未完成<br />
|
||||
原因:列表待完成</td>
|
||||
</tr>
|
||||
</table>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>十进制浮点数学函数
|
||||
<ul>
|
||||
<li>既存和新浮点数学函数的 -<code>d<i>N</i></code> 变体</li>
|
||||
<li><a href="https://zh.cppreference.com/mwiki/index.php?title=c/numeric/math/quantize&action=edit&redlink=1" class="new" title="c/numeric/math/quantize(页面不存在)"><tt>quantized<i>N</i>()</tt></a></li>
|
||||
<li><a href="https://zh.cppreference.com/mwiki/index.php?title=c/numeric/math/samequantum&action=edit&redlink=1" class="new" title="c/numeric/math/samequantum(页面不存在)"><tt>samequantumd<i>N</i>()</tt></a></li>
|
||||
<li><a href="https://zh.cppreference.com/mwiki/index.php?title=c/numeric/math/quantum&action=edit&redlink=1" class="new" title="c/numeric/math/quantum(页面不存在)"><tt>quantumd<i>N</i>()</tt></a></li>
|
||||
<li><a href="https://zh.cppreference.com/mwiki/index.php?title=c/numeric/math/llquantexp&action=edit&redlink=1" class="new" title="c/numeric/math/llquantexp(页面不存在)"><tt>llquantexpd<i>N</i>()</tt></a></li>
|
||||
<li><a href="https://zh.cppreference.com/mwiki/index.php?title=c/numeric/math/encodedec&action=edit&redlink=1" class="new" title="c/numeric/math/encodedec(页面不存在)"><tt>encodedecd<i>N</i>()</tt></a></li>
|
||||
<li><a href="https://zh.cppreference.com/mwiki/index.php?title=c/numeric/math/decodedec&action=edit&redlink=1" class="new" title="c/numeric/math/decodedec(页面不存在)"><tt>decodedecd<i>N</i>()</tt></a></li>
|
||||
<li><a href="https://zh.cppreference.com/mwiki/index.php?title=c/numeric/math/encodebin&action=edit&redlink=1" class="new" title="c/numeric/math/encodebin(页面不存在)"><tt>encodebind<i>N</i>()</tt></a></li>
|
||||
<li><a href="https://zh.cppreference.com/mwiki/index.php?title=c/numeric/math/decodebin&action=edit&redlink=1" class="new" title="c/numeric/math/decodebin(页面不存在)"><tt>decodebind<i>N</i>()</tt></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="https://zh.cppreference.com/mwiki/index.php?title=c/string/byte/strfromf&action=edit&redlink=1" class="new" title="c/string/byte/strfromf(页面不存在)">浮点格式化函数</a></li>
|
||||
<li>POSIX 函数
|
||||
<ul>
|
||||
<li><a href="c-string-byte-memccpy.html"><tt>memccpy()</tt></a></li>
|
||||
<li><a href="c-string-byte-strdup.html"><tt>strdup()</tt></a></li>
|
||||
<li><a href="c-string-byte-strndup.html"><tt>strndup()</tt></a></li>
|
||||
<li><a href="c-chrono-asctime.html"><tt>asctime_r()</tt></a></li>
|
||||
<li><a href="c-chrono-ctime.html"><tt>ctime_r()</tt></a></li>
|
||||
<li><a href="c-chrono-gmtime.html"><tt>gmtime_r()</tt></a></li>
|
||||
<li><a href="c-chrono-localtime.html"><tt>localtime_r()</tt></a></li>
|
||||
<li>对 <a href="c-chrono-strftime.html"><tt>strftime()</tt></a> 与 <a href="c-chrono-wcsftime.html"><tt>wcsftime()</tt></a> 的扩展</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>对 <a href="c-io-fscanf.html"><tt>fscanf()</tt></a> 与 <a href="c-io-fprintf.html"><tt>fprintf()</tt></a> 函数族的扩展
|
||||
<ul>
|
||||
<li>分别为 <a href="c-types-integer.html"><tt>[u]int<i>N</i>_t</tt></a> 与 <a href="c-types-integer.html"><tt>[u]int_fast<i>N</i>_t</tt></a> 的 <code>w<i>N</i></code> 与 <code>wf<i>N</i></code> 长度修饰符</li>
|
||||
<li>分别为 <span class="t-c"><span class="mw-geshi c source-c">_Decimal32</span></span>、 <span class="t-c"><span class="mw-geshi c source-c">_Decimal64</span></span> 与 <span class="t-c"><span class="mw-geshi c source-c">_Decimal128</span></span> 的 <code>H</code>、 <code>D</code> 与 <code>DD</code> 长度修饰符</li>
|
||||
<li>无符号整数类型的 <code>b</code> 转换说明符</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="c-chrono-timespec_getres.html"><tt>timespec_getres()</tt></a></li>
|
||||
<li>整数类型宽度的宏常量</li>
|
||||
<li>浮点类型的额外数值界限宏</li>
|
||||
<li>库版本测试宏
|
||||
<ul>
|
||||
<li><a href="c-numeric-fenv.html"><tt>__STDC_VERSION_FENV_H__</tt></a></li>
|
||||
<li><a href="c-numeric-math.html"><tt>__STDC_VERSION_MATH_H__</tt></a></li>
|
||||
<li><a href="c-types-integer.html"><tt>__STDC_VERSION_STDINT_H__</tt></a></li>
|
||||
<li><a href="c-string-byte.html"><tt>__STDC_VERSION_STDLIB_H__</tt></a></li>
|
||||
<li><a href="c-numeric-tgmath.html"><tt>__STDC_VERSION_TGMATH_H__</tt></a></li>
|
||||
<li><a href="c-chrono.html"><tt>__STDC_VERSION_TIME_H__</tt></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><span class="t-c"><span class="mw-geshi c source-c">_Bool</span></span> 类型的 <a href="c-types.html"><tt>true</tt></a> 与 <a href="c-types.html"><tt>false</tt></a></li>
|
||||
</ul>
|
||||
<h2><span class="mw-headline" id=".E7.BC.BA.E9.99.B7.E6.8A.A5.E5.91.8A">缺陷报告</span></h2>
|
||||
<div style="margin-left:0px">
|
||||
<table class="mw-collapsible mw-collapsed" style="background: transparent; text-align: left; border: 1px solid silver; margin: 0.2em auto auto; width:100%; clear: both; padding: 1px;">
|
||||
<tr>
|
||||
<th style="background: #F0F2F5; font-size:87%; padding:0.2em 0.3em; text-align:center;"><span style="font-size:115%">C23 中修正的缺陷报告( 8 个缺陷)</span></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="border: solid 1px silver; padding: 8px; background: white;">
|
||||
<div class="div-col columns column-count column-count-4" style="-moz-column-count: 4; -webkit-column-count: 4; column-count: 4;">
|
||||
<ul>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2396.htm#dr_476">DR 476</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2396.htm#dr_488">DR 488</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2396.htm#dr_494">DR 494</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2396.htm#dr_496">DR 496</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2396.htm#dr_497">DR 497</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2396.htm#dr_499">DR 499</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2396.htm#dr_500">DR 500</a></li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2396.htm#dr_501">DR 501</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<h2><span class="mw-headline" id=".E7.BC.96.E8.AF.91.E5.99.A8.E6.94.AF.E6.8C.81">编译器支持</span></h2>
|
||||
<p><a href="https://zh.cppreference.com/mwiki/index.php?title=Template:c/compiler_support/23&action=edit&redlink=1" class="new" title="Template:c/compiler support/23(页面不存在)">Template:c/compiler support/23</a></p>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,217 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>bsearch, bsearch_s</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_algorithm_bsearch skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">bsearch, bsearch_s</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-algorithm.html">algorithm</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdlib.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">void</span><span class="sy2">*</span> bsearch<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">void</span> <span class="sy2">*</span>key, <span class="kw4">const</span> <span class="kw4">void</span> <span class="sy2">*</span>ptr, <a href="c-types-size_t.html"><span class="kw100">size_t</span></a> count, <a href="c-types-size_t.html"><span class="kw100">size_t</span></a> size,<br />
|
||||
<span class="kw4">int</span> <span class="br0">(</span><span class="sy2">*</span>comp<span class="br0">)</span><span class="br0">(</span><span class="kw4">const</span> <span class="kw4">void</span><span class="sy2">*</span>, <span class="kw4">const</span> <span class="kw4">void</span><span class="sy2">*</span><span class="br0">)</span> <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(1)</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">void</span><span class="sy2">*</span> bsearch_s<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">void</span> <span class="sy2">*</span>key, <span class="kw4">const</span> <span class="kw4">void</span> <span class="sy2">*</span>ptr, rsize_t count, rsize_t size,<br /></span>
|
||||
<p> <span class="kw4">int</span> <span class="br0">(</span><span class="sy2">*</span>comp<span class="br0">)</span><span class="br0">(</span><span class="kw4">const</span> <span class="kw4">void</span> <span class="sy2">*</span>, <span class="kw4">const</span> <span class="kw4">void</span> <span class="sy2">*</span>, <span class="kw4">void</span> <span class="sy2">*</span><span class="br0">)</span>,<br /></p>
|
||||
<span class="kw4">void</span> <span class="sy2">*</span>context <span class="br0">)</span><span class="sy4">;</span></div>
|
||||
</td>
|
||||
<td>(2)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 在 <code>ptr</code> 所指向的数组中寻找等于 <code>key</code> 所指向的元素。该数组含 <code>count</code> 个大小为 <code>size</code> 字节的元素,并且已相对于 <code>key</code> 划分,也就是说,所有比较小于关键目标的元素必须出现于所有比较等于的元素之前,而且所有比较等于关键目标的元素要出现于所有比较大于关键目标的元素之前。完全排序的数组满足这些要求。用 <code>comp</code> 所指向的函数比较元素。若数组未依照与 <code>comp</code> 标准相同的相对于 <code>*key</code> 的升序划分,则行为未定义。</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 同 <span class="t-v">(1)</span> ,除了传递给 <code>comp</code> 附加环境参数 <code>context</code> ,并在运行时检测下列错误,并调用当前安装的<a href="c-error-set_constraint_handler_s.html">制约处理</a>函数:
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><code>count</code> 或 <code>size</code> 大于 <span class="t-lc">RSIZE_MAX</span></li>
|
||||
<li><code>key</code> 、 <code>ptr</code> 或 <code>comp</code> 是空指针(除非 <code>count</code> 为零)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dd></dd>
|
||||
<dd>同所有边界检查函数, <code>bsearch_s</code> 仅若实现定义了 <span class="t-c"><span class="mw-geshi c source-c">__STDC_LIB_EXT1__</span></span> ,且用户在包含 <code>stdlib.h</code> 前定义 <span class="t-c"><span class="mw-geshi c source-c">__STDC_WANT_LIB_EXT1__</span></span> 为整数常量 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> 才保证可用。</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<p>若数组包含数个 <code>comp</code> 指示为与欲查找元素相等的元素,则结果返回的具体元素是未指定的。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>key</td>
|
||||
<td>-</td>
|
||||
<td>指向要查找的元素的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>ptr</td>
|
||||
<td>-</td>
|
||||
<td>指向要检验的数组的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>count</td>
|
||||
<td>-</td>
|
||||
<td>数组的元素数目</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>size</td>
|
||||
<td>-</td>
|
||||
<td>数组每个元素的字节数</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>comp</td>
|
||||
<td>-</td>
|
||||
<td>比较函数。若首个参数<i>小于</i>第二个,则返回负整数值,若首个参数<i>大于</i>第二个,则返回正整数值,若两参数等价,则返回零。 将 <code>key</code> 传给首个参数,数组中的元素传给第二个。<br />
|
||||
<p>比较函数的签名应等价于如下形式:</p>
|
||||
<p><span class="t-cc"><span class="mw-geshi c source-c"> <span class="kw4">int</span> cmp<span class="br0">(</span><span class="kw4">const</span> <span class="kw4">void</span> <span class="sy2">*</span>a, <span class="kw4">const</span> <span class="kw4">void</span> <span class="sy2">*</span>b<span class="br0">)</span><span class="sy4">;</span></span></span></p>
|
||||
<p>该函数必须不修改传递给它的对象,而且在调用比较相同对象时必须返回一致的结果,无关乎它们在数组中的位置。</p>
|
||||
<p>​</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>context</td>
|
||||
<td>-</td>
|
||||
<td>附加信息(例如,对照序列),作为第三个参数传递给 <code>comp</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 指向与 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">*</span>key</span></span> 比较相等的指针,在找不到元素时返回空指针。</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 同 <span class="t-v">(1)</span> ,除了在运行时制约违规时也返回空指针。</div>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h3>
|
||||
<p>与名称无关, C 和 POSIX 标准都未要求此函数用二分查找实现,也未保证任何复杂度。</p>
|
||||
<p>与其他检查边界的函数不同, <code>bsearch_s</code> 不将零大小数组视作运行时制约违规,而是指出找不到元素(另一个接受零大小数组的函数是 <span class="t-lc">qsort_s</span> )。</p>
|
||||
<p>在 <code>bsearch_s</code> 之前, <code>bsearch</code> 的用户通常用全局变量传递比较函数的附加语环境。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdlib.h></span>
|
||||
<span class="co2">#include <stdio.h></span>
|
||||
|
||||
<span class="kw1">struct</span> data <span class="br0">{</span>
|
||||
<span class="kw4">int</span> nr<span class="sy4">;</span>
|
||||
<span class="kw4">char</span> <span class="kw4">const</span> <span class="sy2">*</span>value<span class="sy4">;</span>
|
||||
<span class="br0">}</span> dat<span class="br0">[</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span>
|
||||
<span class="br0">{</span><span class="nu0">1</span>, <span class="st0">"Foo"</span><span class="br0">}</span>, <span class="br0">{</span><span class="nu0">2</span>, <span class="st0">"Bar"</span><span class="br0">}</span>, <span class="br0">{</span><span class="nu0">3</span>, <span class="st0">"Hello"</span><span class="br0">}</span>, <span class="br0">{</span><span class="nu0">4</span>, <span class="st0">"World"</span><span class="br0">}</span>
|
||||
<span class="br0">}</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw4">int</span> data_cmp<span class="br0">(</span><span class="kw4">void</span> <span class="kw4">const</span> <span class="sy2">*</span>lhs, <span class="kw4">void</span> <span class="kw4">const</span> <span class="sy2">*</span>rhs<span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw1">struct</span> data <span class="kw4">const</span> <span class="sy2">*</span><span class="kw4">const</span> l <span class="sy1">=</span> lhs<span class="sy4">;</span>
|
||||
<span class="kw1">struct</span> data <span class="kw4">const</span> <span class="sy2">*</span><span class="kw4">const</span> r <span class="sy1">=</span> rhs<span class="sy4">;</span>
|
||||
|
||||
<span class="kw1">if</span> <span class="br0">(</span>l<span class="sy2">-</span><span class="sy1">></span>nr <span class="sy1"><</span> r<span class="sy2">-</span><span class="sy1">></span>nr<span class="br0">)</span> <span class="kw1">return</span> <span class="sy2">-</span><span class="nu0">1</span><span class="sy4">;</span>
|
||||
<span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span>l<span class="sy2">-</span><span class="sy1">></span>nr <span class="sy1">></span> r<span class="sy2">-</span><span class="sy1">></span>nr<span class="br0">)</span> <span class="kw1">return</span> <span class="nu0">1</span><span class="sy4">;</span>
|
||||
<span class="kw1">else</span> <span class="kw1">return</span> <span class="nu0">0</span><span class="sy4">;</span>
|
||||
|
||||
<span class="co1">// return (l->nr > r->nr) - (l->nr < r->nr); // 可行的简洁写法</span>
|
||||
<span class="co1">// return l->nr - r->nr; // 错误的简洁写法(若给出 INT_MIN 就会失败)</span>
|
||||
<span class="br0">}</span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw1">struct</span> data key <span class="sy1">=</span> <span class="br0">{</span> .<span class="me1">nr</span> <span class="sy1">=</span> <span class="nu0">3</span> <span class="br0">}</span><span class="sy4">;</span>
|
||||
<span class="kw1">struct</span> data <span class="kw4">const</span> <span class="sy2">*</span>res <span class="sy1">=</span> bsearch<span class="br0">(</span><span class="sy3">&</span>key, dat, <span class="kw4">sizeof</span> dat <span class="sy2">/</span> <span class="kw4">sizeof</span> dat<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span>,
|
||||
<span class="kw4">sizeof</span> dat<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span>, data_cmp<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">if</span> <span class="br0">(</span>res<span class="br0">)</span> <span class="br0">{</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"No %d: %s<span class="es1">\n</span>"</span>, res<span class="sy2">-</span><span class="sy1">></span>nr, res<span class="sy2">-</span><span class="sy1">></span>value<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"No %d not found<span class="es1">\n</span>"</span>, key.<span class="me1">nr</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">No 3: Hello</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.22.5.1 The bsearch function (p: 355)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.6.3.1 The bsearch_s function (p: 608-609)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.20.5.1 The bsearch function (p: 318-319)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.10.5.1 The bsearch function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-algorithm-qsort.html"><span class="t-lines"><span>qsort</span><span>qsort_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>对一个范围内的拥有一定未指定类型的元素排序<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,208 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>qsort, qsort_s</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_algorithm_qsort skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">qsort, qsort_s</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-algorithm.html">algorithm</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdlib.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">void</span> qsort<span class="br0">(</span> <span class="kw4">void</span> <span class="sy2">*</span>ptr, <a href="c-types-size_t.html"><span class="kw100">size_t</span></a> count, <a href="c-types-size_t.html"><span class="kw100">size_t</span></a> size,<br />
|
||||
<span class="kw4">int</span> <span class="br0">(</span><span class="sy2">*</span>comp<span class="br0">)</span><span class="br0">(</span><span class="kw4">const</span> <span class="kw4">void</span> <span class="sy2">*</span>, <span class="kw4">const</span> <span class="kw4">void</span> <span class="sy2">*</span><span class="br0">)</span> <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(1)</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">errno_t qsort_s<span class="br0">(</span> <span class="kw4">void</span> <span class="sy2">*</span>ptr, rsize_t count, rsize_t size,<br /></span>
|
||||
<p> <span class="kw4">int</span> <span class="br0">(</span><span class="sy2">*</span>comp<span class="br0">)</span><span class="br0">(</span><span class="kw4">const</span> <span class="kw4">void</span> <span class="sy2">*</span>, <span class="kw4">const</span> <span class="kw4">void</span> <span class="sy2">*</span>, <span class="kw4">void</span> <span class="sy2">*</span><span class="br0">)</span>,<br /></p>
|
||||
<span class="kw4">void</span> <span class="sy2">*</span>context <span class="br0">)</span><span class="sy4">;</span></div>
|
||||
</td>
|
||||
<td>(2)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 对 <code>ptr</code> 所指向的数组以升序排序。数组包含 <code>count</code> 个长度为 <code>size</code> 字节的元素。用 <code>comp</code> 所指向的函数比较对象。</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 同 <span class="t-v">(1)</span> ,除了传递给 <code>comp</code> 附加环境参数 <code>context</code> ,还会在运行时检测下列错误,并调用当前安装的<a href="c-error-set_constraint_handler_s.html">制约处理</a>函数:
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><code>count</code> 或 <code>size</code> 大于 <span class="t-lc">RSIZE_MAX</span></li>
|
||||
<li><code>key</code> 、 <code>ptr</code> 或 <code>comp</code> 是空指针(除非 <code>count</code> 为零)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dd></dd>
|
||||
<dd>同所有边界检查函数, <code>qsort_s</code> 仅若实现定义了 <span class="t-c"><span class="mw-geshi c source-c">__STDC_LIB_EXT1__</span></span> ,且用户在包含 <code>stdlib.h</code> 前定义 <span class="t-c"><span class="mw-geshi c source-c">__STDC_WANT_LIB_EXT1__</span></span> 为整数常量 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> 才保证可用。</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<p>若 <code>comp</code> 指示两元素相等,则它们排序后的结果是未指定的。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>ptr</td>
|
||||
<td>-</td>
|
||||
<td>指向待排序的数组的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>count</td>
|
||||
<td>-</td>
|
||||
<td>数组的元素数目</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>size</td>
|
||||
<td>-</td>
|
||||
<td>数组每个元素的字节大小</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>comp</td>
|
||||
<td>-</td>
|
||||
<td>比较函数。若首个参数<i>小于</i>第二个,则返回负整数值,若首个参数<i>大于</i>第二个,则返回正整数值,若两参数等价,则返回零。<br />
|
||||
<p>比较函数的签名应等价于如下形式:</p>
|
||||
<p><span class="t-cc"><span class="mw-geshi c source-c"> <span class="kw4">int</span> cmp<span class="br0">(</span><span class="kw4">const</span> <span class="kw4">void</span> <span class="sy2">*</span>a, <span class="kw4">const</span> <span class="kw4">void</span> <span class="sy2">*</span>b<span class="br0">)</span><span class="sy4">;</span></span></span></p>
|
||||
<p>该函数必须不修改传递给它的对象,而且在调用比较相同对象时必须返回一致的结果,无关乎它们在数组中的位置。</p>
|
||||
<p>​</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>context</td>
|
||||
<td>-</td>
|
||||
<td>附加信息(例如,对照序列),作为第三个参数传递给 <code>comp</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<div class="t-li1"><span class="t-li">1)</span> (无)</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 成功时为零,若检测到运行时制约违规,则为非零</div>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h3>
|
||||
<p>与名称无关,C 和 POSIX 标准都未要求此函数用<a href="https://en.wikipedia.org/wiki/Quicksort" class="extiw" title="enwiki:Quicksort">快速排序</a>实现,也未保证任何复杂度或稳定性。</p>
|
||||
<p>与其他边界检查函数不同, <code>qsort_s</code> 不将零大小数组视作运行时强制违规,而是不修改数组并成功返回(另一个接受零大小数组的函数是 <span class="t-lc">bsearch_s</span> )。</p>
|
||||
<p>在 <code>qsort_s</code> 之前,<code>qsort</code> 的用户通常用全局变量来将附加语境传递给比较函数。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
<span class="co2">#include <limits.h></span>
|
||||
|
||||
<span class="kw4">int</span> compare_ints<span class="br0">(</span><span class="kw4">const</span> <span class="kw4">void</span><span class="sy2">*</span> a, <span class="kw4">const</span> <span class="kw4">void</span><span class="sy2">*</span> b<span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw4">int</span> arg1 <span class="sy1">=</span> <span class="sy2">*</span><span class="br0">(</span><span class="kw4">const</span> <span class="kw4">int</span><span class="sy2">*</span><span class="br0">)</span>a<span class="sy4">;</span>
|
||||
<span class="kw4">int</span> arg2 <span class="sy1">=</span> <span class="sy2">*</span><span class="br0">(</span><span class="kw4">const</span> <span class="kw4">int</span><span class="sy2">*</span><span class="br0">)</span>b<span class="sy4">;</span>
|
||||
|
||||
<span class="kw1">if</span> <span class="br0">(</span>arg1 <span class="sy1"><</span> arg2<span class="br0">)</span> <span class="kw1">return</span> <span class="sy2">-</span><span class="nu0">1</span><span class="sy4">;</span>
|
||||
<span class="kw1">if</span> <span class="br0">(</span>arg1 <span class="sy1">></span> arg2<span class="br0">)</span> <span class="kw1">return</span> <span class="nu0">1</span><span class="sy4">;</span>
|
||||
<span class="kw1">return</span> <span class="nu0">0</span><span class="sy4">;</span>
|
||||
|
||||
<span class="co1">// return (arg1 > arg2) - (arg1 < arg2); // 可行的简写</span>
|
||||
<span class="co1">// return arg1 - arg2; // 错误的简写(若给出 INT_MIN 则会失败)</span>
|
||||
<span class="br0">}</span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw4">int</span> ints<span class="br0">[</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span> <span class="sy2">-</span><span class="nu0">2</span>, <span class="nu0">99</span>, <span class="nu0">0</span>, <span class="sy2">-</span><span class="nu0">743</span>, <span class="nu0">2</span>, <a href="c-types-limits.html"><span class="kw359">INT_MIN</span></a>, <span class="nu0">4</span> <span class="br0">}</span><span class="sy4">;</span>
|
||||
<span class="kw4">int</span> size <span class="sy1">=</span> <span class="kw4">sizeof</span> ints <span class="sy2">/</span> <span class="kw4">sizeof</span> <span class="sy2">*</span>ints<span class="sy4">;</span>
|
||||
|
||||
qsort<span class="br0">(</span>ints, size, <span class="kw4">sizeof</span><span class="br0">(</span><span class="kw4">int</span><span class="br0">)</span>, compare_ints<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> i <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span> i <span class="sy1"><</span> size<span class="sy4">;</span> i<span class="sy2">++</span><span class="br0">)</span> <span class="br0">{</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"%d "</span>, ints<span class="br0">[</span>i<span class="br0">]</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"<span class="es1">\n</span>"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">-2147483648 -743 -2 0 2 4 99</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.22.5.2 The qsort function (p: 355-356)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.6.3.2 The qsort_s function (p: 609)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.20.5.2 The qsort function (p: 319)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.10.5.2 The qsort function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-algorithm-bsearch.html"><span class="t-lines"><span>bsearch</span><span>bsearch_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>在未指定类型的数组中搜索一个元素<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,95 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>算法</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_algorithm skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">算法</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><stdlib.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-algorithm-qsort.html"><span class="t-lines"><span>qsort</span><span>qsort_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>对一个范围内的拥有一定未指定类型的元素排序<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-algorithm-bsearch.html"><span class="t-lines"><span>bsearch</span><span>bsearch_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>在未指定类型的数组中搜索一个元素<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.22.5 Searching and sorting utilities (p: 354-356)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.6.3 Searching and sorting utilities (p: 607-609)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.20.5 Searching and sorting utilities (p: 318-319)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.10.5 Searching and sorting utilities</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,147 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>atomic_compare_exchange_weak, atomic_compare_exchange_strong, atomic_compare_exchange_weak_explicit, atomic_compare_exchange_strong_explicit</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_atomic_atomic_compare_exchange skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">atomic_compare_exchange_weak, atomic_compare_exchange_strong, atomic_compare_exchange_weak_explicit, atomic_compare_exchange_strong_explicit</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-atomic.html">atomic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">_Bool atomic_compare_exchange_strong<span class="br0">(</span> <span class="kw4">volatile</span> A<span class="sy2">*</span> obj,<br />
|
||||
C<span class="sy2">*</span> expected, C desired <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(1)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">_Bool atomic_compare_exchange_weak<span class="br0">(</span> <span class="kw4">volatile</span> A <span class="sy2">*</span>obj,<br />
|
||||
C<span class="sy2">*</span> expected, C desired <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(2)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">_Bool atomic_compare_exchange_strong_explicit<span class="br0">(</span> <span class="kw4">volatile</span> A<span class="sy2">*</span> obj,<br /></span>
|
||||
<p> C<span class="sy2">*</span> expected, C desired,<br />
|
||||
<a href="c-atomic-memory_order.html"><span class="kw910">memory_order</span></a> succ,<br /></p>
|
||||
<a href="c-atomic-memory_order.html"><span class="kw910">memory_order</span></a> fail <span class="br0">)</span><span class="sy4">;</span></div>
|
||||
</td>
|
||||
<td>(3)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">_Bool atomic_compare_exchange_weak_explicit<span class="br0">(</span> <span class="kw4">volatile</span> A <span class="sy2">*</span>obj,<br /></span>
|
||||
<p> C<span class="sy2">*</span> expected, C desired,<br />
|
||||
<a href="c-atomic-memory_order.html"><span class="kw910">memory_order</span></a> succ,<br /></p>
|
||||
<a href="c-atomic-memory_order.html"><span class="kw910">memory_order</span></a> fail <span class="br0">)</span><span class="sy4">;</span></div>
|
||||
</td>
|
||||
<td>(4)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>原子地比较 <code>obj</code> 所指向对象的内存的内容与 <code>expected</code> 所指向的内存的内容。若它们相等,则以 <code>desired</code> 替换前者(进行读修改写操作)。否则,将 <code>obj</code> 所指向的实际内存内容加载到 <code>*expected</code> (进行加载操作)。</p>
|
||||
<p>读修改写和加载操作的内存模型分别为 <code>succ</code> 和 <code>fail</code> 。 (1-2) 版本默认使用 <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_seq_cst</a></span> 。</p>
|
||||
<p>函数的弱形式( (2) 与 (4) )允许虚假失败,即表现为如同 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">*</span>obj <span class="sy3">!</span><span class="sy1">=</span> <span class="sy2">*</span>expected</span></span> ,即使它们相等。当比较并交换在循环中时,弱版本在某些平台上会生成更好的性能。在弱版本会要求循环而强版本不要求时,最好用强版本。</p>
|
||||
<p>这是为所有<a href="c-language-atomic.html">原子对象类型</a> <code>A</code> 定义的<a href="c-language-generic.html">泛型函数</a>。参数为指向 volatile 原子对象的指针,以接受非 volatile 与 <a href="c-language-volatile.html">volatile</a> (例如内存映射 I/O )的原子对象,而 volatile 语义在应用此操作时保留。 <code>C</code> 为对应 <code>A</code> 的非原子类型。</p>
|
||||
<p>泛型函数名是宏或是声明有外部链接的标识符是未指定的。若为访问实际函数压制宏定义(例如像 <span class="t-c"><span class="mw-geshi c source-c"><span class="br0">(</span>atomic_compare_exchange<span class="br0">)</span><span class="br0">(</span>...<span class="br0">)</span></span></span> 这样加括号),或程序定义拥有泛型函数名的外部标识符,则行为未定义。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>obj</td>
|
||||
<td>-</td>
|
||||
<td>指向要测试及修改的原子对象的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>expected</td>
|
||||
<td>-</td>
|
||||
<td>指向期待在原子对象中找到的值的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>desired</td>
|
||||
<td>-</td>
|
||||
<td>要存储于原子对象的值,若它得到期待</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>succ</td>
|
||||
<td>-</td>
|
||||
<td>读修改写操作的内存同步顺序,若比较成功。容许所有值。</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>fail</td>
|
||||
<td>-</td>
|
||||
<td>加载操作的内存同步顺序,若比较失败。不能为 <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_release</a></span> 或 <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_acq_rel</a></span> 且不能指定强于 <code>succ</code> 的顺序</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>比较结果:若 <code>*obj</code> 等于 <code>*expected</code> 则为 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw2">true</span></span></span> ,否则 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw2">false</span></span></span> 。</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">注解</span></h3>
|
||||
<p><code>atomic_compare_exchange_strong</code> 表现为如同原子地执行下列代码:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="kw1">if</span> <span class="br0">(</span><a href="c-string-byte-memcmp.html"><span class="kw570">memcmp</span></a><span class="br0">(</span>obj, expected, <span class="kw4">sizeof</span> <span class="sy2">*</span>obj<span class="br0">)</span> <span class="sy1">==</span> <span class="nu0">0</span><span class="br0">)</span> <span class="br0">{</span>
|
||||
<a href="c-string-byte-memcpy.html"><span class="kw572">memcpy</span></a><span class="br0">(</span>obj, <span class="sy3">&</span>desired, <span class="kw4">sizeof</span> <span class="sy2">*</span>obj<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">return</span> <span class="kw2">true</span>
|
||||
<span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span>
|
||||
<a href="c-string-byte-memcpy.html"><span class="kw572">memcpy</span></a><span class="br0">(</span>expected, obj, <span class="kw4">sizeof</span> <span class="sy2">*</span>obj<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">return</span> <span class="kw2">false</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.7.4 The atomic_compare_exchange generic functions (p: 283-284)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_exchange.html"><span class="t-lines"><span>atomic_exchange</span><span>atomic_exchange_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>与原子对象的值交换值<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,101 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>atomic_exchange, atomic_exchange_explicit</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_atomic_atomic_exchange skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">atomic_exchange, atomic_exchange_explicit</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-atomic.html">atomic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">C atomic_exchange<span class="br0">(</span> <span class="kw4">volatile</span> A<span class="sy2">*</span> obj, C desired <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(1)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">C atomic_exchange_explicit<span class="br0">(</span> <span class="kw4">volatile</span> A<span class="sy2">*</span> obj, C desired, <a href="c-atomic-memory_order.html"><span class="kw910">memory_order</span></a> order <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(2)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>原子地以 <code>desired</code> 替换 <code>obj</code> 所指向的对象的值,并返回 <code>obj</code> 先前所保有的值。此操作是读修改写操作。第一版本按照 <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_seq_cst</a></span> 排序内存访问,第二版本按照 <code>order</code> 排序内存访问。</p>
|
||||
<p>这是为所有<a href="c-language-atomic.html">原子对象类型</a> <code>A</code> 定义的<a href="c-language-generic.html">泛型函数</a>。参数为指向 volatile 原子对象的指针,以接受非 volatile 与 <a href="c-language-volatile.html">volatile</a> (例如内存映射 I/O )的原子对象,而 volatile 语义在应用此操作时保留。 <code>C</code> 为对应 <code>A</code> 的非原子类型。</p>
|
||||
<p>泛型函数名是宏或是声明有外部链接的标识符是未指定的。若为访问实际函数压制宏定义(例如像 <span class="t-c"><span class="mw-geshi c source-c"><span class="br0">(</span>atomic_exchange<span class="br0">)</span><span class="br0">(</span>...<span class="br0">)</span></span></span> 这样加括号),或程序定义拥有泛型函数名的外部标识符,则行为未定义。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>obj</td>
|
||||
<td>-</td>
|
||||
<td>指向要修改的原子对象的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>desired</td>
|
||||
<td>-</td>
|
||||
<td>用以替换原子对象的值</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>order</td>
|
||||
<td>-</td>
|
||||
<td>此操作的内存同步顺序标签:允许所有值</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p><code>obj</code> 所指向的原子对象先前所保有的值。</p>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.7.3 The atomic_exchange generic functions (p: 283)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_compare_exchange.html"><span class="t-lines"><span>atomic_compare_exchange_strong</span><span>atomic_compare_exchange_strong_explicit</span><span>atomic_compare_exchange_weak</span><span>atomic_compare_exchange_weak_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>若期待旧值则与原子对象交换值,否则读取旧值<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,142 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>atomic_fetch_add, atomic_fetch_add_explicit</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_atomic_atomic_fetch_add skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">atomic_fetch_add, atomic_fetch_add_explicit</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-atomic.html">atomic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">C atomic_fetch_add<span class="br0">(</span> <span class="kw4">volatile</span> A<span class="sy2">*</span> obj, M arg <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(1)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">C atomic_fetch_add_explicit<span class="br0">(</span> <span class="kw4">volatile</span> A<span class="sy2">*</span> obj, M arg, <a href="c-atomic-memory_order.html"><span class="kw910">memory_order</span></a> order <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(2)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>以 <code>arg</code> 和 <code>*obj</code> 的旧值的加法结果原子地替换 <code>obj</code> 所指向的值,并返回 <code>*obj</code> 先前保有的值。此操作是读修改写操作。第一版本按照 <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_seq_cst</a></span> 排序内存访问,第二版本按照 <code>order</code> 排序内存访问。</p>
|
||||
<p>这是为所有<a href="c-language-atomic.html">原子对象类型</a> <code>A</code> 定义的<a href="c-language-generic.html">泛型函数</a>。参数为指向 volatile 原子对象的指针,以接受非 volatile 与 <a href="c-language-volatile.html">volatile</a> (例如内存映射 I/O )的原子对象,而 volatile 语义在应用此操作时保留。 若 <code>A</code> 为原子整数类型则 <code>M</code> 是对应 <code>A</code> 的非原子类型,或若 <code>A</code> 为原子指针类型则 <code>M</code> 为 <span class="t-lc"><a href="c-types-ptrdiff_t.html">ptrdiff_t</a></span> 。</p>
|
||||
<p>泛型函数名是宏或是声明有外部链接的标识符是未指定的。若为访问实际函数压制宏定义(例如像 <span class="t-c"><span class="mw-geshi c source-c"><span class="br0">(</span>atomic_fetch_add<span class="br0">)</span><span class="br0">(</span>...<span class="br0">)</span></span></span> 这样加括号),或程序定义拥有泛型函数名的外部标识符,则行为未定义。</p>
|
||||
<p>对于有符号整数类型,定义算术为使用补码表示。无未定义结果。对于指针类型,结果可能是未定义地址,但运算不会另有未定义行为。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>obj</td>
|
||||
<td>-</td>
|
||||
<td>指向要修改的原子对象的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>arg</td>
|
||||
<td>-</td>
|
||||
<td>要加到存储于原子对象中的值的值</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>order</td>
|
||||
<td>-</td>
|
||||
<td>此操作的内存同步顺序:容许所有值</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p><code>obj</code> 所指向的原子对象先前保有的值。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <threads.h></span>
|
||||
<span class="co2">#include <stdatomic.h></span>
|
||||
|
||||
<a href="c-atomic.html"><span class="kw963">atomic_int</span></a> acnt<span class="sy4">;</span>
|
||||
<span class="kw4">int</span> cnt<span class="sy4">;</span>
|
||||
|
||||
<span class="kw4">int</span> f<span class="br0">(</span><span class="kw4">void</span><span class="sy2">*</span> thr_data<span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw1">for</span><span class="br0">(</span><span class="kw4">int</span> n <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span> n <span class="sy1"><</span> <span class="nu0">1000</span><span class="sy4">;</span> <span class="sy2">++</span>n<span class="br0">)</span> <span class="br0">{</span>
|
||||
atomic_fetch_add_explicit<span class="br0">(</span><span class="sy3">&</span>acnt, <span class="nu0">1</span>, <a href="c-atomic-memory_order.html"><span class="kw911">memory_order_relaxed</span></a><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// 原子的</span>
|
||||
<span class="sy2">++</span>cnt<span class="sy4">;</span> <span class="co1">// 未定义行为,实际上会失去一些更新</span>
|
||||
<span class="br0">}</span>
|
||||
<span class="kw1">return</span> <span class="nu0">0</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-thread.html"><span class="kw994">thrd_t</span></a> thr<span class="br0">[</span><span class="nu0">10</span><span class="br0">]</span><span class="sy4">;</span>
|
||||
<span class="kw1">for</span><span class="br0">(</span><span class="kw4">int</span> n <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span> n <span class="sy1"><</span> <span class="nu0">10</span><span class="sy4">;</span> <span class="sy2">++</span>n<span class="br0">)</span>
|
||||
<a href="c-thread-thrd_create.html"><span class="kw995">thrd_create</span></a><span class="br0">(</span><span class="sy3">&</span>thr<span class="br0">[</span>n<span class="br0">]</span>, f, <a href="c-types-NULL.html"><span class="kw103">NULL</span></a><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">for</span><span class="br0">(</span><span class="kw4">int</span> n <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span> n <span class="sy1"><</span> <span class="nu0">10</span><span class="sy4">;</span> <span class="sy2">++</span>n<span class="br0">)</span>
|
||||
<a href="c-thread-thrd_join.html"><span class="kw1002">thrd_join</span></a><span class="br0">(</span>thr<span class="br0">[</span>n<span class="br0">]</span>, <a href="c-types-NULL.html"><span class="kw103">NULL</span></a><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"The atomic counter is %u<span class="es1">\n</span>"</span>, acnt<span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"The non-atomic counter is %u<span class="es1">\n</span>"</span>, cnt<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>可能的输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">The atomic counter is 10000
|
||||
The non-atomic counter is 9511</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.7.5 The atomic_fetch and modify generic functions (p: 284-285)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_fetch_sub.html"><span class="t-lines"><span>atomic_fetch_sub</span><span>atomic_fetch_sub_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>原子减法<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,111 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>atomic_fetch_and, atomic_fetch_and_explicit</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_atomic_atomic_fetch_and skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">atomic_fetch_and, atomic_fetch_and_explicit</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-atomic.html">atomic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">C atomic_fetch_and<span class="br0">(</span> <span class="kw4">volatile</span> A<span class="sy2">*</span> obj, M arg <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(1)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">C atomic_fetch_and_explicit<span class="br0">(</span> <span class="kw4">volatile</span> A<span class="sy2">*</span> obj, M arg, <a href="c-atomic-memory_order.html"><span class="kw910">memory_order</span></a> order <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(2)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>以 <code>arg</code> 和 <code>*obj</code> 的旧值逐位与的结果原子地替换 <code>obj</code> 所指向的值,并返回 <code>*obj</code> 先前保有的值。此操作是读-修改-写操作。第一版本按照 <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_seq_cst</a></span> 排序内存访问,第二版本按照 <code>order</code> 排序内存访问。</p>
|
||||
<p>这是为所有<a href="c-language-atomic.html">原子对象类型</a> <code>A</code> 定义的<a href="c-language-generic.html">泛型函数</a>。参数为指向 volatile 原子对象的指针,以接受非 volatile 与 <a href="c-language-volatile.html">volatile</a> (例如内存映射 I/O )的原子对象,而 volatile 语义在应用此操作时保留。 若 <code>A</code> 为原子整数类型则 <code>M</code> 是对应 <code>A</code> 的非原子类型,或若 <code>A</code> 为原子指针类型则 <code>M</code> 为 <span class="t-lc"><a href="c-types-ptrdiff_t.html">ptrdiff_t</a></span> 。</p>
|
||||
<p>泛型函数名是宏或是声明有外部链接的标识符是未指定的。若为访问实际函数压制宏定义(例如像 <span class="t-c"><span class="mw-geshi c source-c"><span class="br0">(</span>atomic_fetch_and<span class="br0">)</span><span class="br0">(</span>...<span class="br0">)</span></span></span> 这样加括号),或程序定义拥有泛型函数名的外部标识符,则行为未定义。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>obj</td>
|
||||
<td>-</td>
|
||||
<td>指向要修改的原子对象的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>arg</td>
|
||||
<td>-</td>
|
||||
<td>要逐位与到存储于原子对象中的值的值</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>order</td>
|
||||
<td>-</td>
|
||||
<td>此操作的内存同步顺序:容许所有值</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p><code>obj</code>所指向的原子对象先前保有的值。</p>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.7.5 The atomic_fetch and modify generic functions (p: 284-285)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_fetch_or.html"><span class="t-lines"><span>atomic_fetch_or</span><span>atomic_fetch_or_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>原子逐位或<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_fetch_xor.html"><span class="t-lines"><span>atomic_fetch_xor</span><span>atomic_fetch_xor_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>原子逐位异或<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,111 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>atomic_fetch_or, atomic_fetch_or_explicit</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_atomic_atomic_fetch_or skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">atomic_fetch_or, atomic_fetch_or_explicit</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-atomic.html">atomic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">C atomic_fetch_or<span class="br0">(</span> <span class="kw4">volatile</span> A<span class="sy2">*</span> obj, M arg <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(1)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">C atomic_fetch_or_explicit<span class="br0">(</span> <span class="kw4">volatile</span> A<span class="sy2">*</span> obj, M arg, <a href="c-atomic-memory_order.html"><span class="kw910">memory_order</span></a> order <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(2)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>以 <code>arg</code> 和 <code>*obj</code> 旧值的逐位或结果原子地替换 <code>obj</code> 所指向的值,并返回 <code>*obj</code> 先前保有的值。此操作是读修改写操作。第一版本按照 <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_seq_cst</a></span> 排序内存访问,第二版本按照 <code>order</code> 排序内存访问。</p>
|
||||
<p>这是为所有<a href="c-language-atomic.html">原子对象类型</a> <code>A</code> 定义的<a href="c-language-generic.html">泛型函数</a>。参数为指向 volatile 原子对象的指针,以接受非 volatile 与 <a href="c-language-volatile.html">volatile</a> (例如内存映射 I/O )的原子对象,而 volatile 语义在应用此操作时保留。 若 <code>A</code> 为原子整数类型则 <code>M</code> 是对应 <code>A</code> 的非原子类型,或若 <code>A</code> 为原子指针类型则 <code>M</code> 为 <span class="t-lc"><a href="c-types-ptrdiff_t.html">ptrdiff_t</a></span> 。</p>
|
||||
<p>泛型函数名是宏或是声明有外部链接的标识符是未指定的。若为访问实际函数压制宏定义(例如像 <span class="t-c"><span class="mw-geshi c source-c"><span class="br0">(</span>atomic_fetch_or<span class="br0">)</span><span class="br0">(</span>...<span class="br0">)</span></span></span> 这样加括号),或程序定义拥有泛型函数名的外部标识符,则行为未定义。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>obj</td>
|
||||
<td>-</td>
|
||||
<td>指向要修改的原子对象的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>arg</td>
|
||||
<td>-</td>
|
||||
<td>要逐位或到存储于原子对象中的值的值</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>order</td>
|
||||
<td>-</td>
|
||||
<td>此操作的内存同步顺序:容许所有值</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p><code>obj</code> 所指向的原子对象先前保有的值。</p>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.7.5 The atomic_fetch and modify generic functions (p: 284-285)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_fetch_and.html"><span class="t-lines"><span>atomic_fetch_and</span><span>atomic_fetch_and_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>原子逐位与<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_fetch_xor.html"><span class="t-lines"><span>atomic_fetch_xor</span><span>atomic_fetch_xor_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>原子逐位异或<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,102 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>atomic_fetch_sub, atomic_fetch_sub_explicit</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_atomic_atomic_fetch_sub skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">atomic_fetch_sub, atomic_fetch_sub_explicit</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-atomic.html">atomic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">C atomic_fetch_sub<span class="br0">(</span> <span class="kw4">volatile</span> A<span class="sy2">*</span> obj, M arg <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(1)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">C atomic_fetch_sub_explicit<span class="br0">(</span> <span class="kw4">volatile</span> A<span class="sy2">*</span> obj, M arg, <a href="c-atomic-memory_order.html"><span class="kw910">memory_order</span></a> order <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(2)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>以 <code>*obj</code> 的旧值减去 <code>arg</code> 的结果原子地替换 <code>obj</code> 的所指向值,并返回 <code>*obj</code> 先前保有的值。此操作是读修改写操作。第一版本按照 <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_seq_cst</a></span> 排序内存访问,第二版本按照 <code>order</code> 排序内存访问。</p>
|
||||
<p>这是为所有<a href="c-language-atomic.html">原子对象类型</a> <code>A</code> 定义的<a href="c-language-generic.html">泛型函数</a>。参数为指向 volatile 原子对象的指针,以接受非 volatile 与 <a href="c-language-volatile.html">volatile</a> (例如内存映射 I/O )的原子对象,而 volatile 语义在应用此操作时保留。 若 <code>A</code> 为原子整数类型则 <code>M</code> 是对应 <code>A</code> 的非原子类型,或若 <code>A</code> 为原子指针类型则 <code>M</code> 为 <span class="t-lc"><a href="c-types-ptrdiff_t.html">ptrdiff_t</a></span> 。</p>
|
||||
<p>泛型函数名是宏或是声明有外部链接的标识符是未指定的。若为访问实际函数压制宏定义(例如像 <span class="t-c"><span class="mw-geshi c source-c"><span class="br0">(</span>atomic_fetch_sub<span class="br0">)</span><span class="br0">(</span>...<span class="br0">)</span></span></span> 这样加括号),或程序定义拥有泛型函数名的外部标识符,则行为未定义。</p>
|
||||
<p>对于有符号整数类型,定义算术为使用补码表示。无未定义结果。对于指针类型,结果可能是未定义地址,但运算不会另有未定义行为。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>obj</td>
|
||||
<td>-</td>
|
||||
<td>指向要修改的原子对象的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>arg</td>
|
||||
<td>-</td>
|
||||
<td>要从存储于原子对象中的值减去的值</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>order</td>
|
||||
<td>-</td>
|
||||
<td>此操作的内存同步顺序:容许所有值</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p><code>obj</code> 所指向的原子对象先前保有的值。</p>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.7.5 The atomic_fetch and modify generic functions (p: 284-285)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_fetch_add.html"><span class="t-lines"><span>atomic_fetch_add</span><span>atomic_fetch_add_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>原子加法<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,111 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>atomic_fetch_xor, atomic_fetch_xor_explicit</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_atomic_atomic_fetch_xor skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">atomic_fetch_xor, atomic_fetch_xor_explicit</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-atomic.html">atomic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">C atomic_fetch_xor<span class="br0">(</span> <span class="kw4">volatile</span> A<span class="sy2">*</span> obj, M arg <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(1)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">C atomic_fetch_xor_explicit<span class="br0">(</span> <span class="kw4">volatile</span> A<span class="sy2">*</span> obj, M arg, <a href="c-atomic-memory_order.html"><span class="kw910">memory_order</span></a> order <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(2)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>以 <code>arg</code> 和 <code>*obj</code> 的旧值逐位异或的结果原子地替换 <code>obj</code> 所指向的值,并返回 <code>*obj</code> 先前保有的值。此操作是读修改写操作。第一版本按照 <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_seq_cst</a></span> 排序内存访问,第二版本按照 <code>order</code> 排序内存访问。</p>
|
||||
<p>这是为所有<a href="c-language-atomic.html">原子对象类型</a> <code>A</code> 定义的<a href="c-language-generic.html">泛型函数</a>。参数为指向 volatile 原子对象的指针,以接受非 volatile 与 <a href="c-language-volatile.html">volatile</a> (例如内存映射 I/O )的原子对象,而 volatile 语义在应用此操作时保留。 若 <code>A</code> 为原子整数类型则 <code>M</code> 是对应 <code>A</code> 的非原子类型,或若 <code>A</code> 为原子指针类型则 <code>M</code> 为 <span class="t-lc"><a href="c-types-ptrdiff_t.html">ptrdiff_t</a></span> 。</p>
|
||||
<p>泛型函数名是宏或是声明有外部链接的标识符是未指定的。若为访问实际函数压制宏定义(例如像 <span class="t-c"><span class="mw-geshi c source-c"><span class="br0">(</span>atomic_fetch_xor<span class="br0">)</span><span class="br0">(</span>...<span class="br0">)</span></span></span> 这样加括号),或程序定义拥有泛型函数名的外部标识符,则行为未定义。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>obj</td>
|
||||
<td>-</td>
|
||||
<td>指向要修改的原子对象的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>arg</td>
|
||||
<td>-</td>
|
||||
<td>要逐位异或到存储于原子对象中的值的值</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>order</td>
|
||||
<td>-</td>
|
||||
<td>此操作的内存同步顺序:容许所有值</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p><code>obj</code> 所指向的原子对象先前保有的值。</p>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.7.5 The atomic_fetch and modify generic functions (p: 284-285)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_fetch_or.html"><span class="t-lines"><span>atomic_fetch_or</span><span>atomic_fetch_or_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>原子逐位或<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_fetch_and.html"><span class="t-lines"><span>atomic_fetch_and</span><span>atomic_fetch_and_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>原子逐位与<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,99 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>atomic_flag</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_atomic_atomic_flag skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">atomic_flag</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-atomic.html">atomic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw1">struct</span> atomic_flag<span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><span class="t-lc"><strong class="selflink">atomic_flag</strong></span> 是一种原子布尔类型。不同于其他原子类型,它保证是免锁的。不同于 <span class="t-lc"><a href="c-atomic.html">atomic_bool</a></span> , <code>atomic_flag</code> 不提供加载或存储操作。</p>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.1/4 atomic_flag (p: 273)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.8 Atomic flag type and operations (p: 285-286)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-ATOMIC_FLAG_INIT.html"><span class="t-lines"><span>ATOMIC_FLAG_INIT</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>初始化新的 <span class="t-c"><span class="mw-geshi c source-c">atomic_flag</span></span><br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_flag_test_and_set.html"><span class="t-lines"><span>atomic_flag_test_and_set</span><span>atomic_flag_test_and_set_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>设置 <code>atomic_flag</code> 为 <code>true</code> 并返回旧值<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_flag_clear.html"><span class="t-lines"><span>atomic_flag_clear</span><span>atomic_flag_clear_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>设置 <code>atomic_flag</code> 为 <code>false</code><br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,95 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>atomic_flag_clear, atomic_flag_clear_explicit</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_atomic_atomic_flag_clear skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">atomic_flag_clear, atomic_flag_clear_explicit</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-atomic.html">atomic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">void</span> atomic_flag_clear<span class="br0">(</span> <span class="kw4">volatile</span> <a href="c-atomic-atomic_flag.html"><span class="kw917">atomic_flag</span></a><span class="sy2">*</span> obj <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(1)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">void</span> atomic_flag_clear_explicit<span class="br0">(</span> <span class="kw4">volatile</span> <a href="c-atomic-atomic_flag.html"><span class="kw917">atomic_flag</span></a><span class="sy2">*</span> obj, <a href="c-atomic-memory_order.html"><span class="kw910">memory_order</span></a> order <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(2)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>原子地更改 <code>obj</code> 所指向的 <code>atomic_flag</code> 状态为清除( <span class="t-c"><span class="mw-geshi c source-c"><span class="kw2">false</span></span></span> )。第一版本按照 <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_seq_cst</a></span> 排序内存访问,第二版本根据 <code>order</code> 排序内存访问。</p>
|
||||
<p>参数为指向 volatile 原子标志的指针,以接受非 volatile 和 <a href="c-language-volatile.html">volatile</a> (如内存映射 I/O )的原子标志。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>obj</td>
|
||||
<td>-</td>
|
||||
<td>指向要修改的 <code>atomic_flag</code> 对象的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>order</td>
|
||||
<td>-</td>
|
||||
<td>此操作所用的内存同步顺序:允许所有值</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>(无)</p>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.8.2 The atomic_flag_clear functions (p: 286)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_flag_test_and_set.html"><span class="t-lines"><span>atomic_flag_test_and_set</span><span>atomic_flag_test_and_set_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>设置 <code>atomic_flag</code> 为 <code>true</code> 并返回旧值<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,99 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>ATOMIC_FLAG_INIT</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_atomic_ATOMIC_FLAG_INIT skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">ATOMIC_FLAG_INIT</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-atomic.html">atomic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="co2">#define ATOMIC_FLAG_INIT /* unspecified */</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>展开成能用于初始化 <span class="t-lc"><a href="c-atomic-atomic_flag.html">atomic_flag</a></span> 类型为清除状态的初始化器。不用此宏初始化的 <code>atomic_flag</code> 的值未定义。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdatomic.h></span>
|
||||
|
||||
<a href="c-atomic-atomic_flag.html"><span class="kw917">atomic_flag</span></a> flag <span class="sy1">=</span> ATOMIC_FLAG_INIT<span class="sy4">;</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.1/3 ATOMIC_FLAG_INIT (p: 273)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.8/4 ATOMIC_FLAG_INIT (p: 285)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-ATOMIC_VAR_INIT.html"><span class="t-lines"><span>ATOMIC_VAR_INIT</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span><span class="t-mark-rev t-deprecated-c17">(C17 中弃用)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>初始化新的原子对象<br />
|
||||
<span class="t-mark">(宏函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_flag.html"><span class="t-lines"><span>atomic_flag</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>免锁布尔标志<br />
|
||||
<span class="t-mark">(结构体)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,95 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>atomic_flag_test_and_set, atomic_flag_test_and_set_explicit</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_atomic_atomic_flag_test_and_set skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">atomic_flag_test_and_set, atomic_flag_test_and_set_explicit</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-atomic.html">atomic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">_Bool atomic_flag_test_and_set<span class="br0">(</span> <span class="kw4">volatile</span> <a href="c-atomic-atomic_flag.html"><span class="kw917">atomic_flag</span></a><span class="sy2">*</span> obj <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(1)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">_Bool atomic_flag_test_and_set_explicit<span class="br0">(</span> <span class="kw4">volatile</span> <a href="c-atomic-atomic_flag.html"><span class="kw917">atomic_flag</span></a><span class="sy2">*</span> obj, <a href="c-atomic-memory_order.html"><span class="kw910">memory_order</span></a> order <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(2)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>原子地更改 <code>obj</code> 所指向的 <code>atomic_flag</code> 的状态为设置( <span class="t-c"><span class="mw-geshi c source-c"><span class="kw2">true</span></span></span> ),并返回先前值。第一版本按 <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_seq_cst</a></span> 排序内存访问,第二版本按 <code>order</code> 排序内存访问。</p>
|
||||
<p>参数是为指向 <code>volatile atomic_flag</code> 的指针,以接受非 volatile 和 <a href="c-language-volatile.html">volatile</a> (例如映射到内存的 I/O )的 <code>atomic_flag</code> 。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>obj</td>
|
||||
<td>-</td>
|
||||
<td>指向要修改的 <code>atomic_flag</code> 对象的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>order</td>
|
||||
<td>-</td>
|
||||
<td>此操作所用的内存同步顺序:容许所有值</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p><code>obj</code> 所指向的 <code>atomic_flag</code> 的先前值。</p>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.8.1 The atomic_flag_test_and_set functions (p: 285-286)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_flag_clear.html"><span class="t-lines"><span>atomic_flag_clear</span><span>atomic_flag_clear_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>设置 <code>atomic_flag</code> 为 <code>false</code><br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,89 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>atomic_init</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_atomic_atomic_init skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">atomic_init</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-atomic.html">atomic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">void</span> atomic_init<span class="br0">(</span> <span class="kw4">volatile</span> A<span class="sy2">*</span> obj, C desired <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>以值 <code>desired</code> 初始化默认构造的原子对象 <code>obj</code> 。此函数非原子:来自另一线程的共时访问,即使通过原子操作,亦为数据竞争。</p>
|
||||
<p>这是为所有<a href="c-language-atomic.html">原子对象类型</a> <code>A</code> 定义的<a href="c-language-generic.html">泛型函数</a>。参数为指向 volatile 原子对象的指针,以接受非 volatile 与 <a href="c-language-volatile.html">volatile</a> (例如内存映射 I/O )的原子对象,而 volatile 语义在应用此操作时保留。 <code>C</code> 为对应 <code>A</code> 的非原子类型。</p>
|
||||
<p>泛型函数名是宏或是声明有外部链接的标识符是未指定的。若为访问实际函数压制宏定义(例如像 <span class="t-c"><span class="mw-geshi c source-c"><span class="br0">(</span>atomic_init<span class="br0">)</span><span class="br0">(</span>...<span class="br0">)</span></span></span> 这样加括号),或程序定义拥有泛型函数名的外部标识符,则行为未定义。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>obj</td>
|
||||
<td>-</td>
|
||||
<td>指向要初始化的原子对象的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>desired</td>
|
||||
<td>-</td>
|
||||
<td>用以初始化原子对象的值</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>(无)</p>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.2.2 The atomic_init generic function (p: 274-275)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-ATOMIC_VAR_INIT.html"><span class="t-lines"><span>ATOMIC_VAR_INIT</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span><span class="t-mark-rev t-deprecated-c17">(C17 中弃用)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>初始化新的原子对象<br />
|
||||
<span class="t-mark">(宏函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,111 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>atomic_is_lock_free</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_atomic_atomic_is_lock_free skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">atomic_is_lock_free</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-atomic.html">atomic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">_Bool atomic_is_lock_free<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">volatile</span> A<span class="sy2">*</span> obj <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>确定所有 <code>A</code> 类型对象(<code>obj</code>所指向对象的类型)上的原子操作是否为免锁。在任何给定的程序执行中,调用 <code>atomic_is_lock_free</code> 的结果对于所有同一类型的指针相同。</p>
|
||||
<p>这是为所有<a href="c-language-atomic.html">原子对象类型</a> <code>A</code> 定义的<a href="c-language-generic.html">泛型函数</a>。参数为指向 volatile 原子对象的指针,以接受非 volatile 与 <a href="c-language-volatile.html">volatile</a> (例如内存映射 I/O )的原子对象,而 volatile 语义在应用此操作时保留。</p>
|
||||
<p>泛型函数名是宏或是声明有外部链接的标识符是未指定的。若为访问实际函数压制宏定义(例如像 <span class="t-c"><span class="mw-geshi c source-c"><span class="br0">(</span>atomic_is_lock_free<span class="br0">)</span><span class="br0">(</span>...<span class="br0">)</span></span></span> 这样加括号),或程序定义拥有泛型函数名的外部标识符,则行为未定义。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>obj</td>
|
||||
<td>-</td>
|
||||
<td>指向要调查的原子对象的指针</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>若所有 <code>A</code> 类型对象的原子操作为免锁,则为 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw2">true</span></span></span> ,否则为 <code>false</code> 。</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h3>
|
||||
<p>C11 在出版时指名此函数针对每个对象,而非每个类型。这已为 DR 465 所订正。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stdatomic.h></span>
|
||||
|
||||
_Atomic <span class="kw1">struct</span> A <span class="br0">{</span> <span class="kw4">int</span> a<span class="br0">[</span><span class="nu0">100</span><span class="br0">]</span><span class="sy4">;</span> <span class="br0">}</span> a<span class="sy4">;</span>
|
||||
_Atomic <span class="kw1">struct</span> B <span class="br0">{</span> <span class="kw4">int</span> x, y<span class="sy4">;</span> <span class="br0">}</span> b<span class="sy4">;</span>
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"_Atomic struct A is lock free? %s<span class="es1">\n</span>"</span>,
|
||||
atomic_is_lock_free<span class="br0">(</span><span class="sy3">&</span>a<span class="br0">)</span> <span class="sy4">?</span> <span class="st0">"true"</span> <span class="sy4">:</span> <span class="st0">"false"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"_Atomic struct B is lock free? %s<span class="es1">\n</span>"</span>,
|
||||
atomic_is_lock_free<span class="br0">(</span><span class="sy3">&</span>b<span class="br0">)</span> <span class="sy4">?</span> <span class="st0">"true"</span> <span class="sy4">:</span> <span class="st0">"false"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>可能的输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">_Atomic struct A is lock free? false
|
||||
_Atomic struct B is lock free? true</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.5.1 The atomic_is_lock_free generic function (p: 280)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-ATOMIC_LOCK_FREE_consts.html"><span class="t-lines"><span>ATOMIC_BOOL_LOCK_FREE</span><span>ATOMIC_CHAR_LOCK_FREE</span><span>ATOMIC_CHAR16_T_LOCK_FREE</span><span>ATOMIC_CHAR32_T_LOCK_FREE</span><span>ATOMIC_WCHAR_T_LOCK_FREE</span><span>ATOMIC_SHORT_LOCK_FREE</span><span>ATOMIC_INT_LOCK_FREE</span><span>ATOMIC_LONG_LOCK_FREE</span><span>ATOMIC_LLONG_LOCK_FREE</span><span>ATOMIC_POINTER_LOCK_FREE</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>指示给定的原子类型为免锁<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,97 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>atomic_load, atomic_load_explicit</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_atomic_atomic_load skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">atomic_load, atomic_load_explicit</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-atomic.html">atomic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">C atomic_load<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">volatile</span> A<span class="sy2">*</span> obj <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(1)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">C atomic_load_explicit<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">volatile</span> A<span class="sy2">*</span> obj, <a href="c-atomic-memory_order.html"><span class="kw910">memory_order</span></a> order <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(2)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>原子地加载并返回 <code>obj</code> 所指向的原子对象的当前值。该操作是原子读操作。</p>
|
||||
<p>第一版本按照 <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_seq_cst</a></span> 排序内存访问,第二版本根按照 <code>order</code> 排序内存访问。 <code>order</code> 必须是 <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_relaxed</a></span> 、 <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_consume</a></span> 、 <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_acquire</a></span> 或 <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_seq_cst</a></span> 之一。否则行为未定义。</p>
|
||||
<p>这是为所有<a href="c-language-atomic.html">原子对象类型</a> <code>A</code> 定义的<a href="c-language-generic.html">泛型函数</a>。参数为指向 volatile 原子对象的指针,以接受非 volatile 与 <a href="c-language-volatile.html">volatile</a> (例如内存映射 I/O )的原子对象,而 volatile 语义在应用此操作时保留。 <code>C</code> 为对应 <code>A</code> 的非原子类型。</p>
|
||||
<p>泛型函数名是宏或是声明有外部链接的标识符是未指定的。若为访问实际函数压制宏定义(例如像 <span class="t-c"><span class="mw-geshi c source-c"><span class="br0">(</span>atomic_load<span class="br0">)</span><span class="br0">(</span>...<span class="br0">)</span></span></span> 这样加括号),或程序定义拥有泛型函数名的外部标识符,则行为未定义。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>obj</td>
|
||||
<td>-</td>
|
||||
<td>指向要访问的原子对象的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>order</td>
|
||||
<td>-</td>
|
||||
<td>此操作的内存同步顺序</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p><code>obj</code> 所指向原子对象的当前值。</p>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.7.2 The atomic_load generic functions (p: 282)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_store.html"><span class="t-lines"><span>atomic_store</span><span>atomic_store_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>存储值到原子对象<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,86 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>ATOMIC_*_LOCK_FREE</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_atomic_ATOMIC_LOCK_FREE_consts skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">ATOMIC_*_LOCK_FREE</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-atomic.html">atomic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="co2">#define ATOMIC_BOOL_LOCK_FREE /* implementation-defined */</span><br /></span>
|
||||
<p><span class="co2">#define ATOMIC_CHAR_LOCK_FREE /* implementation-defined */</span><br />
|
||||
<span class="co2">#define ATOMIC_CHAR16_T_LOCK_FREE /* implementation-defined */</span><br />
|
||||
<span class="co2">#define ATOMIC_CHAR32_T_LOCK_FREE /* implementation-defined */</span><br />
|
||||
<span class="co2">#define ATOMIC_WCHAR_T_LOCK_FREE /* implementation-defined */</span><br />
|
||||
<span class="co2">#define ATOMIC_SHORT_LOCK_FREE /* implementation-defined */</span><br />
|
||||
<span class="co2">#define ATOMIC_INT_LOCK_FREE /* implementation-defined */</span><br />
|
||||
<span class="co2">#define ATOMIC_LONG_LOCK_FREE /* implementation-defined */</span><br />
|
||||
<span class="co2">#define ATOMIC_LLONG_LOCK_FREE /* implementation-defined */</span><br /></p>
|
||||
<span class="co2">#define ATOMIC_POINTER_LOCK_FREE /* implementation-defined */</span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>展开成求值为 <code>0</code> 或 <code>1</code> 或 <code>2</code> 的<a href="c-language-constant_expression.html">预处理器常量表达式</a>,它指示对应<a href="c-atomic.html">原子类型</a>(有符号及无符号一同)的免锁属性。</p>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc-hitem">
|
||||
<td>值</td>
|
||||
<td>解释</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>0</code></td>
|
||||
<td>该原子类型决不免锁</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>1</code></td>
|
||||
<td>该原子类型有时免锁</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>2</code></td>
|
||||
<td>该原子类型始终免锁</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.1/3 atomic lock-free macros (p: 273)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,82 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>atomic_signal_fence</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_atomic_atomic_signal_fence skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">atomic_signal_fence</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-atomic.html">atomic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">void</span> atomic_signal_fence<span class="br0">(</span> <a href="c-atomic-memory_order.html"><span class="kw910">memory_order</span></a> order <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>在线程和同一线程上执行的信号处理函数之间,建立以 <code>order</code> 指示的非原子和宽松原子访问的内存同步顺序。这等价于 <span class="t-lc"><a href="c-atomic-atomic_thread_fence.html">atomic_thread_fence</a></span> ,除了不为内存顺序产生 CPU 指令。只会以 <code>order</code> 指示抑制编译器重排指令。例如,拥有释放语义的栅栏阻止移到读或写到后继写入之后,而拥有获得语义的栅栏阻止移动读或写到前驱读取之前。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>order</td>
|
||||
<td>-</td>
|
||||
<td>此栅栏执行的内存顺序</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>(无)</p>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.4.2 The atomic_signal_fence function (p: 279)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_thread_fence.html"><span class="t-lines"><span>atomic_thread_fence</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>通用的内存顺序依赖的栅栏同步原语<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,97 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>atomic_store, atomic_store_explicit</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_atomic_atomic_store skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">atomic_store, atomic_store_explicit</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-atomic.html">atomic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">void</span> atomic_store<span class="br0">(</span> <span class="kw4">volatile</span> A<span class="sy2">*</span> obj , C desired<span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(1)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">void</span> atomic_store_explicit<span class="br0">(</span> <span class="kw4">volatile</span> A<span class="sy2">*</span> obj, C desired, <a href="c-atomic-memory_order.html"><span class="kw910">memory_order</span></a> order <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(2)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>原子地以 <code>desired</code> 替换 <code>obj</code> 所指向的原子对象的值。此操作是原子写操作。</p>
|
||||
<p>第一版本按照 <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_seq_cst</a></span> 排序内存访问,第二版本按照 <code>order</code> 排序内存访问。 <code>order</code> 必须为 <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_relaxed</a></span> 、 <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_release</a></span> 或 <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_seq_cst</a></span> 之一。否则行为未定义。</p>
|
||||
<p>这是为所有<a href="c-language-atomic.html">原子对象类型</a> <code>A</code> 定义的<a href="c-language-generic.html">泛型函数</a>。参数为指向 volatile 原子对象的指针,以接受非 volatile 与 <a href="c-language-volatile.html">volatile</a> (例如内存映射 I/O )的原子对象,而 volatile 语义在应用此操作时保留。 <code>C</code> 为对应 <code>A</code> 的非原子类型。</p>
|
||||
<p>泛型函数名是宏或是声明有外部链接的标识符是未指定的。若为访问实际函数压制宏定义(例如像 <span class="t-c"><span class="mw-geshi c source-c"><span class="br0">(</span>atomic_store<span class="br0">)</span><span class="br0">(</span>...<span class="br0">)</span></span></span> 这样加括号),或程序定义拥有泛型函数名的外部标识符,则行为未定义。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>obj</td>
|
||||
<td>-</td>
|
||||
<td>指向要修改的原子对象的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>order</td>
|
||||
<td>-</td>
|
||||
<td>用于此操作的内存同步顺序</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>(无)</p>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.7.1 The atomic_store generic functions (p: 282)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_load.html"><span class="t-lines"><span>atomic_load</span><span>atomic_load_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从原子对象读取值<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,82 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>atomic_thread_fence</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_atomic_atomic_thread_fence skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">atomic_thread_fence</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-atomic.html">atomic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">void</span> atomic_thread_fence<span class="br0">(</span> <a href="c-atomic-memory_order.html"><span class="kw910">memory_order</span></a> order <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>按照 <code>order</code> 指示,建立非原子和宽松原子访问的的内存同步顺序,而不进行关联的原子操作。例如,线程 A 中先发生于 <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_release</a></span> 栅栏的所有非原子和宽松原子存储,将同步于与线程 B 中 <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_acquire</a></span> 栅栏之后的对同一位置的非原子和宽松原子加载。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>order</td>
|
||||
<td>-</td>
|
||||
<td>此栅栏执行的内存顺序</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>(无)</p>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.4.1 The atomic_thread_fence function (p: 278-279)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_signal_fence.html"><span class="t-lines"><span>atomic_signal_fence</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>线程与执行于同一线程的信号处理函数间的栅栏<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,105 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>ATOMIC_VAR_INIT</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_atomic_ATOMIC_VAR_INIT skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">ATOMIC_VAR_INIT</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-atomic.html">atomic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="co2">#define ATOMIC_VAR_INIT(value) /* unspecified */</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span><br />
|
||||
<span class="t-mark">(C17 中弃用)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>展开成能用于初始化类型同 <code>value</code> 的原子对象的表达式。</p>
|
||||
<p>拥有自动存储期而不显式初始化的原子对象的初始值不确定。不过,静态和线程局域对象的默认(零)初始化产生合法值。</p>
|
||||
<p>初始化原子对象时,任何同时访问,即使通过原子操作,都是数据竞争(若立即将地址以 <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_relaxed</a></span> 操作传递给另一线程,就可能发生)。</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">注解</span></h3>
|
||||
<p>此宏曾是 C11 原子类型设计早期方案的一部分。在 C11 中不需要,于 C17 中弃用,并计划于 C2x 中移除。</p>
|
||||
<h3><span class="mw-headline" id=".E7.BC.BA.E9.99.B7.E6.8A.A5.E5.91.8A">缺陷报告</span></h3>
|
||||
<p>下列更改行为的缺陷报告追溯地应用于以前出版的 C 标准。</p>
|
||||
<table class="dsctable" style="font-size:0.8em">
|
||||
<tr>
|
||||
<th>DR</th>
|
||||
<th>应用于</th>
|
||||
<th>出版时的行为</th>
|
||||
<th>正确行为</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2396.htm#dr_485">DR 485</a></td>
|
||||
<td>C11</td>
|
||||
<td>规范冗余并与核心语言矛盾</td>
|
||||
<td>已更正</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-17">
|
||||
<ul>
|
||||
<li>C17 标准(ISO/IEC 9899:2018):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.2.1 The ATOMIC_VAR_INIT macro (p: 201)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.2.1 The ATOMIC_VAR_INIT macro (p: 274)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-ATOMIC_FLAG_INIT.html"><span class="t-lines"><span>ATOMIC_FLAG_INIT</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>初始化新的 <span class="t-c"><span class="mw-geshi c source-c"><a href="c-atomic-atomic_flag.html"><span class="kw917">atomic_flag</span></a></span></span><br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,84 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>kill_dependency</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_atomic_kill_dependency skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">kill_dependency</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-atomic.html">atomic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">A kill_dependency<span class="br0">(</span>A y<span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>告知编译器: <span class="t-lc"><a href="c-atomic-memory_order.html">memory_order_consume</a></span> 原子加载操作所开始的依赖树不再延伸过 <code>kill_dependency</code> 的返回值;即该参数不把依赖带入返回值。</p>
|
||||
<p>函数实现为宏。 <code>A</code> 为 <code>y</code> 的类型。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>y</td>
|
||||
<td>-</td>
|
||||
<td>要从依赖树移除返回值的表达式</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>返回 <code>y</code> ,它不再是依赖树的一部分。</p>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-17">
|
||||
<ul>
|
||||
<li>C17 标准(ISO/IEC 9899:2018):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.3.1 The kill_dependency macro (p: 203-204)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.3.1 The kill_dependency macro (p: 278)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin"></table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,210 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>memory_order</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_atomic_memory_order skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">memory_order</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-atomic.html">atomic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw2">enum</span> memory_order <span class="br0">{</span><br /></span>
|
||||
<p> memory_order_relaxed,<br />
|
||||
memory_order_consume,<br />
|
||||
memory_order_acquire,<br />
|
||||
memory_order_release,<br />
|
||||
memory_order_acq_rel,<br />
|
||||
memory_order_seq_cst<br /></p>
|
||||
<span class="br0">}</span><span class="sy4">;</span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><code>memory_order</code> 指定内存访问,包括常规的非原子内存访问,如何围绕原子操作排序。在没有任何制约的多处理器系统上,多个线程同时读或写数个变量时,一个线程能观测到变量值更改的顺序不同于另一个线程写它们的顺序。其实,更改的顺序甚至能在多个读取线程间相异。一些类似的效果还能在单处理器系统上出现,因为内存模型允许编译器变换。</p>
|
||||
<p><a href="c-language-atomic.html">语言</a>和库中所有原子操作的默认行为提供<i>序列一致顺序</i>(见后述讨论)。该默认行为可能有损性能,不过可以给予库的原子操作额外的 <code>memory_order</code> 参数,以指定附加制约,在原子性外,编译器和处理器还必须强制该操作。</p>
|
||||
<h3><span class="mw-headline" id=".E5.B8.B8.E9.87.8F">常量</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc-hitem">
|
||||
<td>值</td>
|
||||
<td>解释</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>memory_order_relaxed</code></td>
|
||||
<td>宽松操作:没有同步或顺序制约,仅对此操作要求原子性(见下方<a href="c-atomic-memory_order.html#.E5.AE.BD.E6.9D.BE.E9.A1.BA.E5.BA.8F">宽松顺序</a>)。</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>memory_order_consume</code></td>
|
||||
<td>有此内存顺序的加载操作,在其影响的内存位置进行<i>消费操作</i>:当前线程中依赖于当前加载的该值的读或写不能被重排到此加载前。其他释放同一原子变量的线程的对数据依赖变量的写入,为当前线程所可见。在大多数平台上,这只影响到编译器优化(见下方<a href="c-atomic-memory_order.html#.E9.87.8A.E6.94.BE.E6.B6.88.E8.B4.B9.E9.A1.BA.E5.BA.8F">释放消费顺序</a>)。</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>memory_order_acquire</code></td>
|
||||
<td>有此内存顺序的加载操作,在其影响的内存位置进行<i>获得操作</i>:当前线程中读或写不能被重排到此加载前。其他释放同一原子变量的线程的所有写入,能为当前线程所见(见下方<a href="c-atomic-memory_order.html#.E9.87.8A.E6.94.BE.E8.8E.B7.E5.BE.97.E9.A1.BA.E5.BA.8F">释放获得顺序</a>)。</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>memory_order_release</code></td>
|
||||
<td>有此内存顺序的存储操作进行<i>释放操作</i>:当前线程中的读或写不能被重排到此存储后。当前线程的所有写入,可见于获得该同一原子变量的其他线程(见下方<a href="c-atomic-memory_order.html#.E9.87.8A.E6.94.BE.E8.8E.B7.E5.BE.97.E9.A1.BA.E5.BA.8F">释放获得顺序</a>),并且对该原子变量的带依赖写入变得对于其他消费同一原子对象的线程可见(见下方<a href="c-atomic-memory_order.html#.E9.87.8A.E6.94.BE.E6.B6.88.E8.B4.B9.E9.A1.BA.E5.BA.8F">释放消费顺序</a>)。</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>memory_order_acq_rel</code></td>
|
||||
<td>带此内存顺序的读修改写操作既是<i>获得操作</i>又是<i>释放操作</i>。当前线程的读或写内存不能被重排到此存储前或后。所有释放同一原子变量的线程的写入可见于修改之前,而且修改可见于其他获得同一原子变量的线程。</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>memory_order_seq_cst</code></td>
|
||||
<td>有此内存顺序的加载操作进行<i>获得操作</i>,存储操作进行<i>释放操作</i>,而读修改写操作进行<i>获得操作</i>和<i>释放操作</i>,再加上存在一个单独全序,其中所有线程以同一顺序观测到所有修改(见下方<a href="c-atomic-memory_order.html#.E5.BA.8F.E5.88.97.E4.B8.80.E8.87.B4.E9.A1.BA.E5.BA.8F">序列一致顺序</a>)。</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="metadata plainlinks ambox mbox-small-left ambox-notice" style="">
|
||||
<tr>
|
||||
<td class="mbox-empty-cell"></td>
|
||||
<td class="mbox-text" style="">本节未完成<br />
|
||||
原因:先发生于和其他概念同 C++ ,但保持修改顺序和<a href="c-language-atomic.html">c/language/atomic</a>中的四种一致</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="metadata plainlinks ambox mbox-small-left ambox-notice" style="">
|
||||
<tr>
|
||||
<td class="mbox-empty-cell"></td>
|
||||
<td class="mbox-text" style="">本节未完成<br />
|
||||
原因:在做上面的时候,不要忘记在 C11 出版时先发生于不是不成环的,这经由 DR 401 被更新到匹配C++11</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h4><span class="mw-headline" id=".E5.AE.BD.E6.9D.BE.E9.A1.BA.E5.BA.8F">宽松顺序</span></h4>
|
||||
<p>带标签 <span class="t-c"><span class="mw-geshi c source-c">memory_order_relaxed</span></span> 的原子操作无同步操作;它们不会在共时的内存访问间强加顺序。它们只保证原子性和修改顺序一致性。</p>
|
||||
<p>例如,对于最初为零的 <code>x</code> 和 <code>y</code> ,</p>
|
||||
<p><span class="t-c"><span class="mw-geshi c source-c"><span class="co1">// 线程 1 :</span><br />
|
||||
r1 <span class="sy1">=</span> <a href="c-atomic-atomic_load.html"><span class="kw933">atomic_load_explicit</span></a><span class="br0">(</span>y, memory_order_relaxed<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// A</span><br />
|
||||
<a href="c-atomic-atomic_store.html"><span class="kw931">atomic_store_explicit</span></a><span class="br0">(</span>x, r1, memory_order_relaxed<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// B</span><br />
|
||||
<span class="co1">// 线程 2 :</span><br />
|
||||
r2 <span class="sy1">=</span> <a href="c-atomic-atomic_load.html"><span class="kw933">atomic_load_explicit</span></a><span class="br0">(</span>x, memory_order_relaxed<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// C</span><br />
|
||||
<a href="c-atomic-atomic_store.html"><span class="kw931">atomic_store_explicit</span></a><span class="br0">(</span>y, <span class="nu0">42</span>, memory_order_relaxed<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// D</span></span></span></p>
|
||||
<p>允许产生结果 <code>r1 == 42 && r2 == 42</code> ,因为即使线程 1 中 A <i>先序于</i> B 且线程 2 中 C <i>先序于</i> D ,却没有制约避免 <code>y</code> 的修改顺序中 D 先出现于 A ,而 <code>x</code> 的修改顺序中 B 先出现于 C 。 D 在 <code>y</code> 上的副效应,可能可见于线程 1 中的加载 A ,同时 B 在 <code>x</code> 上的副效应,可能可见于线程 2 中的加载 C 。</p>
|
||||
<p><br /></p>
|
||||
<p>宽松内存顺序的典型使用是计数器自增,例如引用计数器,因为这只要求原子性,但不要求顺序或同步(注意计数器自减要求与析构函数进行获得释放同步)</p>
|
||||
<h4><span class="mw-headline" id=".E9.87.8A.E6.94.BE.E6.B6.88.E8.B4.B9.E9.A1.BA.E5.BA.8F">释放消费顺序</span></h4>
|
||||
<p>若线程 A 中的原子存储带标签 <span class="t-c"><span class="mw-geshi c source-c">memory_order_release</span></span> 而线程 B 中来自同一对象的读取存储值的原子加载带标签 <span class="t-c"><span class="mw-geshi c source-c">memory_order_consume</span></span> ,则线程 A 视角中<i>先发生于</i>原子存储的所有内存写入(非原子和宽松原子的),会在线程 B 中该加载操作所<i>携带依赖</i>进入的操作中变成<i>可见副效应</i>,即一旦完成原子加载,则保证线程B中,使用从该加载获得的值的运算符和函数,能见到线程 A 写入内存的内容。</p>
|
||||
<p>同步仅在<i>释放</i>和<i>消费</i>同一原子对象的线程间建立。其他线程能见到与被同步线程的一者或两者相异的内存访问顺序。</p>
|
||||
<p>所有异于 DEC Alpha 的主流 CPU 上,依赖顺序是自动的,无需为此同步模式产生附加的 CPU 指令,只有某些编译器优化收益受影响(例如,编译器被禁止牵涉到依赖链的对象上的推测性加载)。</p>
|
||||
<p>此顺序的典型使用情况,涉及对很少被写入的数据结构(安排表、配置、安全策略、防火墙规则等)的共时读取,和有指针中介发布的发布者-订阅者情形,即当生产者发布消费者能通过其访问信息的指针之时:无需令生产者写入内存的所有其他内容对消费者可见(这在弱顺序架构上可能是昂贵的操作)。这种场景的例子之一是 <a href="https://en.wikipedia.org/wiki/Read-copy-update" class="extiw" title="enwiki:Read-copy-update">rcu 解引用</a>。</p>
|
||||
<p><br /></p>
|
||||
<p>注意到 2015 年 2 月为止没有产品编译器跟踪依赖链:均将消费操作提升为获得操作。</p>
|
||||
<h4><span class="mw-headline" id=".E9.87.8A.E6.94.BE.E5.BA.8F.E5.88.97">释放序列</span></h4>
|
||||
<p>若一些原子对象被存储-释放,而有数个其他线程对该原子对象进行读修改写操作,则会形成“释放序列”:所有对该原子对象读修改写的线程与首个线程同步,而且彼此同步,即使它们没有 <code>memory_order_release</code> 语义。这使得单产出-多消费情况可行,而无需在每个消费线程间强加不必要的同步。</p>
|
||||
<h4><span class="mw-headline" id=".E9.87.8A.E6.94.BE.E8.8E.B7.E5.BE.97.E9.A1.BA.E5.BA.8F">释放获得顺序</span></h4>
|
||||
<p>若线程 A 中的一个原子存储带标签 <span class="t-c"><span class="mw-geshi c source-c">memory_order_release</span></span> ,而线程 B 中来自同一变量的原子加载带标签 <span class="t-c"><span class="mw-geshi c source-c">memory_order_acquire</span></span> ,则从线程 A 的视角<i>先发生于</i>原子存储的所有内存写入(非原子及宽松原子的),在线程 B 中成为<i>可见副效应</i>,即一旦原子加载完成,则保证线程 B 能观察到线程 A 写入内存的所有内容。</p>
|
||||
<p>同步仅建立在<i>释放</i>和<i>获得</i>同一原子对象的线程之间。其他线程可能看到与被同步线程的一者或两者相异的内存访问顺序。</p>
|
||||
<p>在强顺序系统( x86 、 SPARC TSO 、 IBM 主框架)上,释放获得顺序对于多数操作是自动进行的。无需为此同步模式添加额外的 CPU 指令,只有某些编译器优化受影响(例如,编译器被禁止将非原子存储移到原子存储-释放后,或将非原子加载移到原子加载-获得前)。在弱顺序系统( ARM 、 Itanium 、 Power PC )上,必须使用特别的 CPU 加载或内存栅栏指令。</p>
|
||||
<p>互斥锁(例如<a href="c-thread.html#.E4.BA.92.E6.96.A5">互斥</a>或<a href="c-atomic-atomic_flag_test_and_set.html">原子自旋锁</a>)是释放获得同步的例子:线程 A 释放锁而线程 B 获得它时,发生于线程 A 环境的临界区(释放之前)中的所有事件,必须对于执行同一临界区的线程 B (获得之后)可见。</p>
|
||||
<h4><span class="mw-headline" id=".E5.BA.8F.E5.88.97.E4.B8.80.E8.87.B4.E9.A1.BA.E5.BA.8F">序列一致顺序</span></h4>
|
||||
<p>带标签 <span class="t-c"><span class="mw-geshi c source-c">memory_order_seq_cst</span></span> 的原子操作不仅以与释放/获得顺序相同的方式排序内存(在一个线程中<i>先发生于</i>存储的任何结果都变成进行加载的线程中的<i>可见副效应</i>),还对所有带此标签的内存操作建立<i>单独全序</i>。</p>
|
||||
<p>正式而言,</p>
|
||||
<p>每个加载原子对象 M 的 <code>memory_order_seq_cst</code> 操作 B ,观测到以下之一:</p>
|
||||
<ul>
|
||||
<li>修改 M 的上个操作 A 的结果,A 在单独全序中先出现于 B</li>
|
||||
<li>或若存在这种 A ,则 B 可能观测到某些 M 的修改结果,这些修改非 <code>memory_order_seq_cst</code> 而且不<i>先发生于</i> A</li>
|
||||
<li>或若不存在这种 A ,则 B 可能观测到某些 M 的无关联修改,这些修改非 <code>memory_order_seq_cst</code></li>
|
||||
</ul>
|
||||
<p>若存在 <code>memory_order_seq_cst</code>的 <span class="t-lc"><a href="c-atomic-atomic_thread_fence.html">atomic_thread_fence</a></span> 操作 X <i>先序于</i> B ,则 B 观测到以下之一:</p>
|
||||
<ul>
|
||||
<li>在单独全序中先出现于 X 的上个 M 的 <code>memory_order_seq_cst</code> 修改</li>
|
||||
<li>在单独全序中后出现于它的某些 M 的无关联修改</li>
|
||||
</ul>
|
||||
<p>设有一对 M 上的原子操作,称之为 A 和 B ,这里 A 写入、 B 读取 M 的值,若存在二个 <code>memory_order_seq_cst</code> 的 <span class="t-lc"><a href="c-atomic-atomic_thread_fence.html">atomic_thread_fence</a></span> X 和 Y ,且若 A <i>先序于</i> X , Y <i>先序于</i> B ,且 X 在单独全序中先出现于 Y ,则 B 观测到二者之一:</p>
|
||||
<ul>
|
||||
<li>A 的效应</li>
|
||||
<li>某些在 M 的修改顺序中后出现于 A 的无关联修改</li>
|
||||
</ul>
|
||||
<p>设有一对 M 上的原子操作,称之为 A 和 B ,若符合下列条件之一,则 M 的修改顺序中 B 先发生于 A</p>
|
||||
<ul>
|
||||
<li>存在一个 <code>memory_order_seq_cst</code> 的 <span class="t-lc"><a href="c-atomic-atomic_thread_fence.html">atomic_thread_fence</a></span> X ,它满足 A <i>先序于</i> X ,且 X 在单独全序中先出现于 B</li>
|
||||
<li>或者,存在一个 <code>memory_order_seq_cst</code> 的 <span class="t-lc"><a href="c-atomic-atomic_thread_fence.html">atomic_thread_fence</a></span> Y ,它满足 Y <i>先序于</i> B ,且 A 在单独全序中先出现于 Y</li>
|
||||
<li>或者,存在 <code>memory_order_seq_cst</code> 的 <span class="t-lc"><a href="c-atomic-atomic_thread_fence.html">atomic_thread_fence</a></span> X 和 Y ,它们满足 A <i>先序于</i> X , Y <i>先序于</i> B ,且 X 在单独全序中先出现于 Y</li>
|
||||
</ul>
|
||||
<p>注意这表明:</p>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 只要不带 <code>memory_order_seq_cst</code> 标签的原子操作进入局面,则立即丧失序列一致性</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 序列一致栅栏仅为栅栏自身建立全序,而不为通常情况下的原子操作建立(<i>先序于</i>不是跨线程关系,不同于<i>先发生于</i>)</div>
|
||||
<p>若在多生产者-多消费者的情形中,且所有消费者都必须以相同顺序观察到所有生产者的动作出现,则可能必须有序列顺序。</p>
|
||||
<p>全序列顺序在所有多核系统上要求完全的内存栅栏 CPU 指令。这可能成为性能瓶颈,因为它强制受影响的内存访问传播到每个核心。</p>
|
||||
<h3><span class="mw-headline" id=".E4.B8.8E_volatile_.E7.9A.84.E5.85.B3.E7.B3.BB">与 volatile 的关系</span></h3>
|
||||
<p>在执行线程中,不能将通过 <a href="c-language-volatile.html">volatile 左值</a>的访问(读和写)重排到同线程内为序列点所分隔的可观测副效应(包含其他 volatile 访问)后,但不保证另一线程观察到此顺序,因为 volatile 访问不建立线程间同步。</p>
|
||||
<p>另外, volatile 访问不是原子的(共时的读和写是<a href="c-language-memory_model.html">数据竞争</a>),且不排序内存(非 volatile 内存访问可以自由地重排到 volatile 访问前后)。</p>
|
||||
<p>一个值得注意的例外是 Visual Studio ,其中默认设置下,每个 volatile 写拥有释放语义,而每个 volatile 读拥有获得语义( <a rel="nofollow" class="external text" href="http://msdn.microsoft.com/en-us/library/12a04hfd(v=vs.100).aspx">MSDN</a> ),故而可将 volatile 对象用于线程间同步。标准的 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">volatile</span></span></span> 语义不可应用于多线程编程,尽管它们在应用到 <span class="t-c"><span class="mw-geshi c source-c"><a href="c-program-sig_atomic_t.html"><span class="kw499">sig_atomic_t</span></a></span></span> 对象时,足以与例如运行于同一线程的 <span class="t-lc"><a href="c-program-signal.html">signal</a></span> 处理函数交流。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<table class="metadata plainlinks ambox mbox-small-left ambox-notice" style="">
|
||||
<tr>
|
||||
<td class="mbox-empty-cell"></td>
|
||||
<td class="mbox-text" style="">本节未完成<br />
|
||||
原因:暂无示例</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.1/4 memory_order (p: 273)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17.3 Order and consistency (p: 275-277)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin"></table>
|
||||
<h3><span class="mw-headline" id=".E5.A4.96.E9.83.A8.E9.93.BE.E6.8E.A5">外部链接</span></h3>
|
||||
<ul>
|
||||
<li><a href="https://en.wikipedia.org/wiki/MOESI_protocol" class="extiw" title="enwiki:MOESI protocol">MOESI 协议</a></li>
|
||||
</ul>
|
||||
<table class="metadata plainlinks ambox mbox-small-left ambox-notice" style="">
|
||||
<tr>
|
||||
<td class="mbox-empty-cell"></td>
|
||||
<td class="mbox-text" style="">本节未完成<br />
|
||||
原因:我们在 QPI 、 MOESI 可能还有 Dragon 上找下好参考</td>
|
||||
</tr>
|
||||
</table>
|
||||
<ul>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.cl.cam.ac.uk/~pes20/weakmemory/cacm.pdf">x86-TSO : x86 多处理器上严格而有用的程序员模型</a>,P. Sewell 等, 2010</li>
|
||||
<li><a rel="nofollow" class="external text" href="http://www.cl.cam.ac.uk/~pes20/ppc-supplemental/test7.pdf">ARM 及 POWER 宽松内存模型的入门教程</a>, P. Sewell 等 , 2012</li>
|
||||
<li><a rel="nofollow" class="external text" href="https://researchspace.auckland.ac.nz/bitstream/handle/2292/11594/MESIF-2009.pdf?sequence=6">MESIF :点对点互联的两跳缓存一致性协议</a>, J.R. Goodman, H.H.J. Hum , 2009</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,435 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>原子操作库</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_atomic skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">原子操作库</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<p>若编译器定义宏常量 <code>__STDC_NO_ATOMICS__</code><span class="t-mark-rev t-since-c11">(C11)</span> ,则不提供头文件 <code><stdatomic.h></code> 、关键词 <span class="t-c"><span class="mw-geshi c source-c">_Atomic</span></span> 以及所有列于此的名称。</p>
|
||||
<h3><span class="mw-headline" id=".E7.B1.BB.E5.9E.8B">类型</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-memory_order.html"><span class="t-lines"><span>memory_order</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>定义内存顺序制约<br />
|
||||
<span class="t-mark">(枚举)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_flag.html"><span class="t-lines"><span>atomic_flag</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>免锁布尔标志<br />
|
||||
<span class="t-mark">(结构体)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E5.AE.8F">宏</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-ATOMIC_LOCK_FREE_consts.html"><span class="t-lines"><span>ATOMIC_BOOL_LOCK_FREE</span><span>ATOMIC_CHAR_LOCK_FREE</span><span>ATOMIC_CHAR16_T_LOCK_FREE</span><span>ATOMIC_CHAR32_T_LOCK_FREE</span><span>ATOMIC_WCHAR_T_LOCK_FREE</span><span>ATOMIC_SHORT_LOCK_FREE</span><span>ATOMIC_INT_LOCK_FREE</span><span>ATOMIC_LONG_LOCK_FREE</span><span>ATOMIC_LLONG_LOCK_FREE</span><span>ATOMIC_POINTER_LOCK_FREE</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>指示给定的原子类型为免锁<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-ATOMIC_FLAG_INIT.html"><span class="t-lines"><span>ATOMIC_FLAG_INIT</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>初始化新的 <span class="t-c"><span class="mw-geshi c source-c"><a href="c-atomic-atomic_flag.html"><span class="kw917">atomic_flag</span></a></span></span><br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-ATOMIC_VAR_INIT.html"><span class="t-lines"><span>ATOMIC_VAR_INIT</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span><span class="t-mark-rev t-deprecated-c17">(C17 中弃用)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>初始化新的原子对象<br />
|
||||
<span class="t-mark">(宏函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-kill_dependency.html"><span class="t-lines"><span>kill_dependency</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>打破 <span class="t-c"><span class="mw-geshi c source-c"><a href="c-atomic-memory_order.html"><span class="kw912">memory_order_consume</span></a></span></span> 的依赖链<br />
|
||||
<span class="t-mark">(宏函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E5.87.BD.E6.95.B0">函数</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><stdatomic.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_flag_test_and_set.html"><span class="t-lines"><span>atomic_flag_test_and_set</span><span>atomic_flag_test_and_set_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>设置 <code>atomic_flag</code> 为 <code>true</code> 并返回旧值<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_flag_clear.html"><span class="t-lines"><span>atomic_flag_clear</span><span>atomic_flag_clear_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>设置 <code>atomic_flag</code> 为 <code>false</code><br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_init.html"><span class="t-lines"><span>atomic_init</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>初始化既存的原子对象<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_is_lock_free.html"><span class="t-lines"><span>atomic_is_lock_free</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>指示原子对象是否免锁<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_store.html"><span class="t-lines"><span>atomic_store</span><span>atomic_store_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>存储值到原子对象<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_load.html"><span class="t-lines"><span>atomic_load</span><span>atomic_load_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从原子对象读取值<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_exchange.html"><span class="t-lines"><span>atomic_exchange</span><span>atomic_exchange_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>与原子对象的值交换值<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_compare_exchange.html"><span class="t-lines"><span>atomic_compare_exchange_strong</span><span>atomic_compare_exchange_strong_explicit</span><span>atomic_compare_exchange_weak</span><span>atomic_compare_exchange_weak_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>若期待旧值则与原子对象交换值,否则读取旧值<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_fetch_add.html"><span class="t-lines"><span>atomic_fetch_add</span><span>atomic_fetch_add_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>原子加法<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_fetch_sub.html"><span class="t-lines"><span>atomic_fetch_sub</span><span>atomic_fetch_sub_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>原子减法<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_fetch_or.html"><span class="t-lines"><span>atomic_fetch_or</span><span>atomic_fetch_or_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>原子逐位或<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_fetch_xor.html"><span class="t-lines"><span>atomic_fetch_xor</span><span>atomic_fetch_xor_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>原子逐位异或<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_fetch_and.html"><span class="t-lines"><span>atomic_fetch_and</span><span>atomic_fetch_and_explicit</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>原子逐位与<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_thread_fence.html"><span class="t-lines"><span>atomic_thread_fence</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>通用的内存顺序依赖的栅栏同步原语<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-atomic-atomic_signal_fence.html"><span class="t-lines"><span>atomic_signal_fence</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>线程与执行于同一线程的信号处理函数间的栅栏<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E7.B1.BB.E5.9E.8B_2">类型</span></h3>
|
||||
<p>标准库为<a href="c-language-atomic.html">核心语言原子类型</a>提供便利 typedef 。</p>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc-hitem">
|
||||
<td>typedef 名</td>
|
||||
<td>完整类型名</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_bool</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic _Bool</span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_char</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <span class="kw4">char</span></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_schar</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <span class="kw4">signed</span> <span class="kw4">char</span></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_uchar</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <span class="kw4">unsigned</span> <span class="kw4">char</span></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_short</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <span class="kw4">short</span></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_ushort</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <span class="kw4">unsigned</span> <span class="kw4">short</span></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_int</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <span class="kw4">int</span></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_uint</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <span class="kw4">unsigned</span> <span class="kw4">int</span></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_long</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <span class="kw4">long</span></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_ulong</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <span class="kw4">unsigned</span> <span class="kw4">long</span></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_llong</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <span class="kw4">long</span> <span class="kw4">long</span></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_ullong</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <span class="kw4">unsigned</span> <span class="kw4">long</span> <span class="kw4">long</span></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_char16_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic char16_t</span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_char32_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic char32_t</span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_wchar_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <span class="kw4">wchar_t</span></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_int_least8_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <a href="c-types-integer.html"><span class="kw114">int_least8_t</span></a></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_uint_least8_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <a href="c-types-integer.html"><span class="kw128">uint_least8_t</span></a></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_int_least16_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <a href="c-types-integer.html"><span class="kw115">int_least16_t</span></a></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_uint_least16_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <a href="c-types-integer.html"><span class="kw129">uint_least16_t</span></a></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_int_least32_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <a href="c-types-integer.html"><span class="kw116">int_least32_t</span></a></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_uint_least32_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <a href="c-types-integer.html"><span class="kw130">uint_least32_t</span></a></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_int_least64_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <a href="c-types-integer.html"><span class="kw117">int_least64_t</span></a></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_uint_least64_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <a href="c-types-integer.html"><span class="kw131">uint_least64_t</span></a></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_int_fast8_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <a href="c-types-integer.html"><span class="kw110">int_fast8_t</span></a></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_uint_fast8_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <a href="c-types-integer.html"><span class="kw124">uint_fast8_t</span></a></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_int_fast16_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <a href="c-types-integer.html"><span class="kw111">int_fast16_t</span></a></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_uint_fast16_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <a href="c-types-integer.html"><span class="kw125">uint_fast16_t</span></a></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_int_fast32_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <a href="c-types-integer.html"><span class="kw112">int_fast32_t</span></a></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_uint_fast32_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <a href="c-types-integer.html"><span class="kw126">uint_fast32_t</span></a></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_int_fast64_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <a href="c-types-integer.html"><span class="kw113">int_fast64_t</span></a></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_uint_fast64_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <a href="c-types-integer.html"><span class="kw127">uint_fast64_t</span></a></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_intptr_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <a href="c-types-integer.html"><span class="kw119">intptr_t</span></a></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_uintptr_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <a href="c-types-integer.html"><span class="kw133">uintptr_t</span></a></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_size_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <a href="c-types-size_t.html"><span class="kw100">size_t</span></a></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_ptrdiff_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <a href="c-types-ptrdiff_t.html"><span class="kw101">ptrdiff_t</span></a></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_intmax_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <a href="c-types-integer.html"><span class="kw118">intmax_t</span></a></span></span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code>atomic_uintmax_t</code></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">_Atomic <a href="c-types-integer.html"><span class="kw132">uintmax_t</span></a></span></span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.17 Atomics <stdatomic.h> (p: 273-286)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.31.8 Atomics <stdatomic.h> (p: 455-456)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin"></table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,228 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>asctime, asctime_r, asctime_s</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_chrono_asctime skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">asctime, asctime_r, asctime_s</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-chrono.html">chrono</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><time.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">char</span><span class="sy2">*</span> asctime <span class="br0">(</span> <span class="kw4">const</span> <span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a><span class="sy2">*</span> time_ptr <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(1)</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c23">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">char</span><span class="sy2">*</span> asctime_r<span class="br0">(</span> <span class="kw4">const</span> <span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a><span class="sy2">*</span> time_ptr, <span class="kw4">char</span><span class="sy2">*</span> buf <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(2)</td>
|
||||
<td><span class="t-mark-rev t-since-c23">(C23 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">errno_t asctime_s<span class="br0">(</span> <span class="kw4">char</span><span class="sy2">*</span> buf, rsize_t bufsz, <span class="kw4">const</span> <span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a><span class="sy2">*</span> time_ptr <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(3)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 转换日历时间 <span class="t-lc"><a href="c-chrono-tm.html">tm</a></span> 为以下固定的 25 字符表示形式: <span class="t-c"><span class="mw-geshi c source-c">Www Mmm dd hh<span class="sy4">:</span>mm<span class="sy4">:</span>ss yyyy\n</span></span>
|
||||
<ul>
|
||||
<li><code>Www</code> ——来自 <span class="t-c"><span class="mw-geshi c source-c">time_ptr<span class="sy2">-</span><span class="sy1">></span>tm_wday</span></span> 的星期之日的三字母英文缩写, <code>Mon</code> 、 <code>Tue</code> 、 <code>Wed</code> 、 <code>Thu</code> 、 <code>Fri</code> 、 <code>Sat</code> 、 <code>Sun</code> 之一。</li>
|
||||
<li><code>Mmm</code> ——来自 <span class="t-c"><span class="mw-geshi c source-c">time_ptr<span class="sy2">-</span><span class="sy1">></span>tm_mon</span></span> 的月名的三字母英文缩写, <code>Jan</code> 、 <code>Feb</code> 、 <code>Mar</code> 、 <code>Apr</code> 、 <code>May</code> 、 <code>Jun</code> 、 <code>Jul</code> 、 <code>Aug</code> 、 <code>Sep</code> 、 <code>Oct</code> 、 <code>Nov</code> 、 <code>Dec</code> 之一。</li>
|
||||
<li><code>dd</code> ——来自 <span class="t-c"><span class="mw-geshi c source-c">timeptr<span class="sy2">-</span><span class="sy1">></span>tm_mday</span></span> 的 2 位月之日,如同由 <span class="t-lc"><a href="c-io-fprintf.html">sprintf</a></span> 以 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">%</span>2d</span></span> 打印</li>
|
||||
<li><code>hh</code> ——来自 <span class="t-c"><span class="mw-geshi c source-c">timeptr<span class="sy2">-</span><span class="sy1">></span>tm_hour</span></span> 的 2 位时,如同由 <span class="t-lc"><a href="c-io-fprintf.html">sprintf</a></span> 以 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">%</span>.2d</span></span> 打印</li>
|
||||
<li><code>mm</code> ——来自 <span class="t-c"><span class="mw-geshi c source-c">timeptr<span class="sy2">-</span><span class="sy1">></span>tm_min</span></span> 的 2 位分,如同由 <span class="t-lc"><a href="c-io-fprintf.html">sprintf</a></span> 以 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">%</span>.2d</span></span> 打印</li>
|
||||
<li><code>ss</code> ——来自 <span class="t-c"><span class="mw-geshi c source-c">timeptr<span class="sy2">-</span><span class="sy1">></span>tm_sec</span></span> 的 2 位秒,如同由 <span class="t-lc"><a href="c-io-fprintf.html">sprintf</a></span> 以 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">%</span>.2d</span></span> 打印</li>
|
||||
<li><code>yyyy</code> ——来自 <span class="t-c"><span class="mw-geshi c source-c">timeptr<span class="sy2">-</span><span class="sy1">></span>tm_year <span class="sy2">+</span> <span class="nu0">1900</span></span></span> 的 4 位年,如同由 <span class="t-lc"><a href="c-io-fprintf.html">sprintf</a></span> 以 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">%</span>4d</span></span> 打印</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="t-li1"><span class="t-li"></span> 若 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">*</span>time_ptr</span></span> 的任何成员在其正常范围外则行为未定义</div>
|
||||
<div class="t-li1"><span class="t-li"></span> 若 <span class="t-c"><span class="mw-geshi c source-c">time_ptr<span class="sy2">-</span><span class="sy1">></span>tm_year</span></span> 所指示的历年拥有多于 4 位数或小于 1000 年则行为未定义。</div>
|
||||
<div class="t-li1"><span class="t-li"></span> 函数不支持本地化,且不能移除换行符。</div>
|
||||
<div class="t-li1"><span class="t-li"></span> 函数修改静态存储且非线程安全。</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 同 <span class="t-v">(1)</span> ,除了写入消息到用户提供的存储 <code>buf</code> 中,保证它是空终止的。</div>
|
||||
<div class="t-li1"><span class="t-li"></span> 若存储始于 <code>buf</code> 的可用大小小于 26 字节则行为未定义。</div>
|
||||
<div class="t-li1"><span class="t-li">3)</span> 同 <span class="t-v">(1)</span> ,除了写入消息到用户提供的存储 <code>buf</code> 中,保证它是空终止的。且在运行是检测下列错误并调用当前安装的<a href="c-error-set_constraint_handler_s.html">制约处理</a>函数:
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><code>buf</code> 或 <code>time_ptr</code> 为空指针</li>
|
||||
<li><code>bufsz</code> 小于 26 或大于 <span class="t-lc">RSIZE_MAX</span></li>
|
||||
<li>不是所有 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">*</span>time_ptr</span></span> 的成员都在其正常范围内</li>
|
||||
<li><span class="t-c"><span class="mw-geshi c source-c">time_ptr<span class="sy2">-</span><span class="sy1">></span>tm_year</span></span> 所指示的年小于 0 或大于 9999</li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dd>同所有边界检查函数, <code>asctime_s</code> 仅若实现定义 <span class="t-c"><span class="mw-geshi c source-c">__STDC_LIB_EXT1__</span></span> 且用户在包含 <code>time.h</code> 前定义 <span class="t-c"><span class="mw-geshi c source-c">__STDC_WANT_LIB_EXT1__</span></span> 为整数常量 1 才保证可用。</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>time_ptr</td>
|
||||
<td>-</td>
|
||||
<td>指向指定待打印时间的 <span class="t-lc"><a href="c-chrono-tm.html">tm</a></span> 对象的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>buf</td>
|
||||
<td>-</td>
|
||||
<td>指向用户提供的至少有 26 字节的缓冲区的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>bufsz</td>
|
||||
<td>-</td>
|
||||
<td>用户提供的缓冲区大小</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 指向保有如上描述的日期与时间的静态空终止字符串指针。该字符串可能在 <code>asctime</code> 与 <span class="t-lc"><a href="c-chrono-ctime.html">ctime</a></span> 间共享,且可能在每次调用这些函数时被重写。</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> <code>buf</code> ,在返回后指向保有如上描述的日期与时间的静态空终止字符串。</div>
|
||||
<div class="t-li1"><span class="t-li">3)</span> 成功时为零,失败时为非零,并设置 <span class="t-c"><span class="mw-geshi c source-c">buf<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span></span></span> 为零(除非 <code>buf</code> 为空指针或 <code>bufsz</code> 为零或大于 <span class="t-lc">RSIZE_MAX</span> )。</div>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">注解</span></h3>
|
||||
<p><code>asctime</code> 返回指向静态数据的指针从而不是线程安全的。 POSIX 标记此函数为过时并推荐用 <span class="t-lc"><a href="c-chrono-strftime.html">strftime</a></span> 代替。 C 标准亦推荐用 <span class="t-lc"><a href="c-chrono-strftime.html">strftime</a></span> 代替 <code>asctime</code> 、 <code>asctime_r</code> 及 <code>asctime_s</code> 因为 <code>strftime</code> 更灵活且为本地环境相关。</p>
|
||||
<p>POSIX 限制未定义行为仅为当输出字符串将会长于 25 个字符、当 <code>timeptr->tm_wday</code> 或 <code>timeptr->tm_mon</code> 不在期待范围内,或当 <code>timeptr->tm_year</code> 超出 <span class="t-c"><span class="mw-geshi c source-c">INT_MAX<span class="sy2">-</span><span class="nu0">1990</span></span></span> 。</p>
|
||||
<p>一些实现处置 <span class="t-c"><span class="mw-geshi c source-c">timeptr<span class="sy2">-</span><span class="sy1">></span>tm_mday<span class="sy1">==</span><span class="nu0">0</span></span></span> 为表示前一月的最后一日。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#define __STDC_WANT_LIB_EXT1__ 1</span>
|
||||
<span class="co2">#include <time.h></span>
|
||||
<span class="co2">#include <stdio.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a> <span class="sy1">=</span> <span class="sy2">*</span><a href="c-chrono-localtime.html"><span class="kw519">localtime</span></a><span class="br0">(</span><span class="sy3">&</span><span class="br0">(</span><a href="c-chrono-time_t.html"><span class="kw523">time_t</span></a><span class="br0">)</span><span class="br0">{</span><a href="c-chrono-time.html"><span class="kw513">time</span></a><span class="br0">(</span><a href="c-types-NULL.html"><span class="kw103">NULL</span></a><span class="br0">)</span><span class="br0">}</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"%s"</span>, asctime<span class="br0">(</span><span class="sy3">&</span><a href="c-chrono-tm.html"><span class="kw522">tm</span></a><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="co2">#ifdef __STDC_LIB_EXT1__</span>
|
||||
<span class="kw4">char</span> str<span class="br0">[</span><span class="nu0">26</span><span class="br0">]</span><span class="sy4">;</span>
|
||||
asctime_s<span class="br0">(</span>str, <span class="kw4">sizeof</span> str, <span class="sy3">&</span><a href="c-chrono-tm.html"><span class="kw522">tm</span></a><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"%s"</span>, str<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="co2">#endif</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>可能的输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">Tue May 26 21:51:50 2015
|
||||
Tue May 26 21:51:50 2015</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-17">
|
||||
<ul>
|
||||
<li>C17 标准(ISO/IEC 9899:2018):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.27.2.1 The asctime function (p: 287)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.8.2.1 The asctime_s function (p: 453-454)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.27.2.1 The asctime function (p: 392-393)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.8.2.1 The asctime_s function (p: 624-625)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.23.3.1 The asctime function (p: 341-342)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.12.3.1 The asctime function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-ctime.html"><span class="t-lines"><span>ctime</span><span>ctime_r</span><span>ctime_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c23">(C23)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将 <code>struct time_t</code> 对象转换成文本表示<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-strftime.html"><span class="t-lines"><span>strftime</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将 <code>struct tm</code> 对象转换成自定义文本表示<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,171 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>clock</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_chrono_clock skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">clock</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-chrono.html">chrono</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><time.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><a href="c-chrono-clock_t.html"><span class="kw524">clock_t</span></a> clock<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>返回从关联到进程开始执行的实现定义时期的起,进程所用的粗略处理器时间。将此值除以 <span class="t-lc"><a href="c-chrono-CLOCKS_PER_SEC.html">CLOCKS_PER_SEC</a></span> 可转换为秒。</p>
|
||||
<p>只有两次对 <code>clock</code> 不同调用的返回值的差是有意义的,因为 <code>clock</code> 时期的起始不必与程序起始一致。 <code>clock</code> 时间或许会快于或慢于挂钟时间,这取决于操作系统给予程序的执行资源。例如,若 CPU 为其他进程所共享, <code>clock</code> 时间可能慢于挂钟。另一方面,若当前进程为多线程,而有更多资源可用, <code>clock</code> 时间可能会快于挂钟。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<p>(无)</p>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>程序迄今为止所用的处理器时间。若该信息不可用,或若其值无法表示,则为 <span class="t-c"><span class="mw-geshi c source-c"><span class="br0">(</span><a href="c-chrono-clock_t.html"><span class="kw524">clock_t</span></a><span class="br0">)</span><span class="br0">(</span><span class="sy2">-</span><span class="nu0">1</span><span class="br0">)</span></span></span> 。</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">注解</span></h3>
|
||||
<p>在兼容 POSIX 的系统上,带时钟 id <span class="t-c"><span class="mw-geshi c source-c">CLOCK_PROCESS_CPUTIME_ID</span></span> 的 <a rel="nofollow" class="external text" href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/clock_getres.html"><code>clock_gettime</code></a> 提供更高的解析度。</p>
|
||||
<p><code>clock()</code> 返回的值会在一些不遵从的实现上回卷。例如在某种实现上,若 <span class="t-lc"><a href="c-chrono-clock_t.html">clock_t</a></span> 为有符号 32 位整数而 <span class="t-lc"><a href="c-chrono-CLOCKS_PER_SEC.html">CLOCKS_PER_SEC</a></span> 为 1000000 ,则它将在约 2147 秒(约 36 分)后回卷。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<p>此示例演示 clock() 和现实时间之差异。</p>
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <time.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
<span class="co2">#include <threads.h> // POSIX 中的 pthread.h</span>
|
||||
|
||||
<span class="co1">// 函数 f() 做一些耗时的工作</span>
|
||||
<span class="kw4">int</span> f<span class="br0">(</span><span class="kw4">void</span><span class="sy2">*</span> thr_data<span class="br0">)</span> <span class="co1">// POSIX 中返回 void*</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw4">volatile</span> <span class="kw4">double</span> d <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
|
||||
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> n<span class="sy1">=</span><span class="nu0">0</span><span class="sy4">;</span> n<span class="sy1"><</span><span class="nu0">10000</span><span class="sy4">;</span> <span class="sy2">++</span>n<span class="br0">)</span>
|
||||
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> m<span class="sy1">=</span><span class="nu0">0</span><span class="sy4">;</span> m<span class="sy1"><</span><span class="nu0">10000</span><span class="sy4">;</span> <span class="sy2">++</span>m<span class="br0">)</span>
|
||||
d <span class="sy2">+</span><span class="sy1">=</span> d<span class="sy2">*</span>n<span class="sy2">*</span>m<span class="sy4">;</span>
|
||||
<span class="kw1">return</span> <span class="nu0">0</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw1">struct</span> timespec ts1, tw1<span class="sy4">;</span> <span class="co1">// C11 与 POSIX 皆可</span>
|
||||
clock_gettime<span class="br0">(</span>CLOCK_PROCESS_CPUTIME_ID, <span class="sy3">&</span>ts1<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// POSIX</span>
|
||||
clock_gettime<span class="br0">(</span>CLOCK_MONOTONIC, <span class="sy3">&</span>tw1<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// POSIX ;C11 中用 timespec_get</span>
|
||||
<a href="c-chrono-clock_t.html"><span class="kw524">clock_t</span></a> t1 <span class="sy1">=</span> clock<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<a href="c-thread.html"><span class="kw995">thrd_t</span></a> thr1, thr2<span class="sy4">;</span> <span class="co1">// C11 ;POSIX 中用 pthread_t</span>
|
||||
<a href="c-thread-thrd_create.html"><span class="kw996">thrd_create</span></a><span class="br0">(</span><span class="sy3">&</span>thr1, f, <a href="c-types-NULL.html"><span class="kw103">NULL</span></a><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// C11 ; POSIX 中用 pthread_create</span>
|
||||
<a href="c-thread-thrd_create.html"><span class="kw996">thrd_create</span></a><span class="br0">(</span><span class="sy3">&</span>thr2, f, <a href="c-types-NULL.html"><span class="kw103">NULL</span></a><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-thread-thrd_join.html"><span class="kw1003">thrd_join</span></a><span class="br0">(</span>thr1, <a href="c-types-NULL.html"><span class="kw103">NULL</span></a><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// C11 ; POSIX 中用 pthread_join</span>
|
||||
<a href="c-thread-thrd_join.html"><span class="kw1003">thrd_join</span></a><span class="br0">(</span>thr2, <a href="c-types-NULL.html"><span class="kw103">NULL</span></a><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw1">struct</span> timespec ts2, tw2<span class="sy4">;</span>
|
||||
clock_gettime<span class="br0">(</span>CLOCK_PROCESS_CPUTIME_ID, <span class="sy3">&</span>ts2<span class="br0">)</span><span class="sy4">;</span>
|
||||
clock_gettime<span class="br0">(</span>CLOCK_MONOTONIC, <span class="sy3">&</span>tw2<span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-chrono-clock_t.html"><span class="kw524">clock_t</span></a> t2 <span class="sy1">=</span> clock<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw4">double</span> dur <span class="sy1">=</span> <span class="nu16">1000.0</span><span class="sy2">*</span><span class="br0">(</span>t2<span class="sy2">-</span>t1<span class="br0">)</span><span class="sy2">/</span><a href="c-chrono-CLOCKS_PER_SEC.html"><span class="kw521">CLOCKS_PER_SEC</span></a><span class="sy4">;</span>
|
||||
<span class="kw4">double</span> posix_dur <span class="sy1">=</span> <span class="nu16">1000.0</span><span class="sy2">*</span>ts2.<span class="me1">tv_sec</span> <span class="sy2">+</span> <span class="nu19">1e-6</span><span class="sy2">*</span>ts2.<span class="me1">tv_nsec</span>
|
||||
<span class="sy2">-</span> <span class="br0">(</span><span class="nu16">1000.0</span><span class="sy2">*</span>ts1.<span class="me1">tv_sec</span> <span class="sy2">+</span> <span class="nu19">1e-6</span><span class="sy2">*</span>ts1.<span class="me1">tv_nsec</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw4">double</span> posix_wall <span class="sy1">=</span> <span class="nu16">1000.0</span><span class="sy2">*</span>tw2.<span class="me1">tv_sec</span> <span class="sy2">+</span> <span class="nu19">1e-6</span><span class="sy2">*</span>tw2.<span class="me1">tv_nsec</span>
|
||||
<span class="sy2">-</span> <span class="br0">(</span><span class="nu16">1000.0</span><span class="sy2">*</span>tw1.<span class="me1">tv_sec</span> <span class="sy2">+</span> <span class="nu19">1e-6</span><span class="sy2">*</span>tw1.<span class="me1">tv_nsec</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"CPU time used (per clock(): %.2f ms<span class="es1">\n</span>"</span>, dur<span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"CPU time used (per clock_gettime()): %.2f ms<span class="es1">\n</span>"</span>, posix_dur<span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"Wall time passed: %.2f ms<span class="es1">\n</span>"</span>, posix_wall<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>可能的输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">CPU time used (per clock(): 1580.00 ms
|
||||
CPU time used (per clock_gettime()): 1582.76 ms
|
||||
Wall time passed: 792.13 ms</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.27.2.1 The clock function (p: 389)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.23.2.1 The clock function (p: 339)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.12.2.1 The clock function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-ctime.html"><span class="t-lines"><span>ctime</span><span>ctime_r</span><span>ctime_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c23">(C23)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将 <code>struct time_t</code> 对象转换成文本表示<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-time.html"><span class="t-lines"><span>time</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>返回纪元开始经过的当前系统日历时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,132 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>clock_t</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_chrono_clock_t skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">clock_t</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-chrono.html">chrono</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><time.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><span class="kw1">typedef</span> <span class="coMULTI">/* unspecified */</span> clock_t<span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>足以表示进程所用的处理器时间的<span class="t-rev-inl t-until-c11"><span>算术</span> <span><span class="t-mark-rev t-until-c11">(C11 前)</span></span></span><span class="t-rev-inl t-since-c11"><span>实数</span> <span><span class="t-mark-rev t-since-c11">(C11 起)</span></span></span>类型。它拥有实现定义的范围和精度。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <time.h></span>
|
||||
|
||||
<span class="kw4">volatile</span> <span class="kw4">unsigned</span> sink<span class="sy4">;</span>
|
||||
<span class="kw4">int</span> main <span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
clock_t start <span class="sy1">=</span> <a href="c-chrono-clock.html"><span class="kw514">clock</span></a><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw1">for</span><span class="br0">(</span><a href="c-types-size_t.html"><span class="kw100">size_t</span></a> i<span class="sy1">=</span><span class="nu0">0</span><span class="sy4">;</span> i<span class="sy1"><</span><span class="nu0">10000000</span><span class="sy4">;</span> <span class="sy2">++</span>i<span class="br0">)</span>
|
||||
sink<span class="sy2">++</span><span class="sy4">;</span>
|
||||
|
||||
clock_t end <span class="sy1">=</span> <a href="c-chrono-clock.html"><span class="kw514">clock</span></a><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw4">double</span> cpu_time_used <span class="sy1">=</span> <span class="br0">(</span><span class="br0">(</span><span class="kw4">double</span><span class="br0">)</span> <span class="br0">(</span>end <span class="sy2">-</span> start<span class="br0">)</span><span class="br0">)</span> <span class="sy2">/</span> <a href="c-chrono-CLOCKS_PER_SEC.html"><span class="kw522">CLOCKS_PER_SEC</span></a><span class="sy4">;</span>
|
||||
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"for loop took %f seconds to execute <span class="es1">\n</span>"</span>, cpu_time_used<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>可能的输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">for loop took 0.033492 seconds to execute</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.27.1/3 Components of time (p: 388)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.23.1/3 Components of time (p: 338)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.12.1 Components of time</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-clock.html"><span class="t-lines"><span>clock</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>返回未加工的程序启动时开始经过的处理器时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-CLOCKS_PER_SEC.html"><span class="t-lines"><span>CLOCKS_PER_SEC</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>处理器每秒的时间计数<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,107 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>CLOCKS_PER_SEC</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_chrono_CLOCKS_PER_SEC skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">CLOCKS_PER_SEC</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-chrono.html">chrono</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><time.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><span class="co2">#define CLOCKS_PER_SEC /*implementation defined*/</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>展开成一个 <span class="t-lc"><a href="c-chrono-clock_t.html">clock_t</a></span> 类型的表达式(不必是编译时常量),等于每秒计次数,如 <span class="t-lc"><a href="c-chrono-clock.html">clock()</a></span> 所返回者。</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h3>
|
||||
<p>POSIX 定义 <code>CLOCKS_PER_SEC</code> 为一百万,无关乎 <span class="t-lc"><a href="c-chrono-clock.html">clock</a></span> 的实际精度。</p>
|
||||
<p>在 C89 中被标准为 <code>CLOCKS_PER_SEC</code> 之前,此宏有时会以其 IEEE std 1003.1-1988 名称 <code>CLK_TCK</code> 为人所用:该名称未包含于 C89 ,并为 POSIX 自身于 1996 年移除,因为它和 <a rel="nofollow" class="external text" href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/times.html">times()</a> 函数所用的给出每秒时钟数的宏 <code>_SC_CLK_TCK</code> 有歧义。</p>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.27.1/2 Components of time (p: 388)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.23.1/2 Components of time (p: 338)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.12.1 Components of time</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-clock.html"><span class="t-lines"><span>clock</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>返回未加工的程序启动时开始经过的处理器时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-clock_t.html"><span class="t-lines"><span>clock_t</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从时点开始的处理器时间类型<br />
|
||||
<span class="t-mark">(typedef)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,225 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>ctime, ctime_r, ctime_s</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_chrono_ctime skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">ctime, ctime_r, ctime_s</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-chrono.html">chrono</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><time.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">char</span><span class="sy2">*</span> ctime <span class="br0">(</span> <span class="kw4">const</span> <a href="c-chrono-time_t.html"><span class="kw523">time_t</span></a><span class="sy2">*</span> timer <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(1)</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c23">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">char</span><span class="sy2">*</span> ctime_r<span class="br0">(</span> <span class="kw4">const</span> <a href="c-chrono-time_t.html"><span class="kw523">time_t</span></a><span class="sy2">*</span> timer, <span class="kw4">char</span><span class="sy2">*</span> buf <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(2)</td>
|
||||
<td><span class="t-mark-rev t-since-c23">(C23 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">errno_t ctime_s<span class="br0">(</span> <span class="kw4">char</span> <span class="sy2">*</span>buf, rsize_t bufsz, <span class="kw4">const</span> <a href="c-chrono-time_t.html"><span class="kw523">time_t</span></a><span class="sy2">*</span> timer <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(3)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 转换从纪元起的给定时间为历法本地时间,再转换为文本表示,如同通过调用 <span class="t-c"><span class="mw-geshi c source-c"><a href="c-chrono-asctime.html"><span class="kw515">asctime</span></a><span class="br0">(</span><a href="c-chrono-localtime.html"><span class="kw519">localtime</span></a><span class="br0">(</span>timer<span class="br0">)</span><span class="br0">)</span></span></span><span class="t-rev-inl t-since-c23"><span>或 <span class="t-c"><span class="mw-geshi c source-c"><a href="c-chrono-asctime.html"><span class="kw515">asctime</span></a><span class="br0">(</span>localtime_r<span class="br0">(</span>timer, <span class="sy3">&</span><span class="br0">(</span><span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a><span class="br0">)</span><span class="br0">{</span><span class="nu0">0</span><span class="br0">}</span><span class="br0">)</span><span class="br0">)</span></span></span></span> <span><span class="t-mark-rev t-since-c23">(C23 起)</span></span></span> 。</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 同 <span class="t-v">(1)</span> ,除了函数等价于 <span class="t-c"><span class="mw-geshi c source-c">asctime_r<span class="br0">(</span>localtime_r<span class="br0">(</span>timer, <span class="sy3">&</span><span class="br0">(</span><span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a><span class="br0">)</span><span class="br0">{</span><span class="nu0">0</span><span class="br0">}</span><span class="br0">)</span>, buf<span class="br0">)</span></span></span> 。</div>
|
||||
<div class="t-li1"><span class="t-li">3)</span> 同 <span class="t-v">(1)</span> ,除了函数等价于 <span class="t-c"><span class="mw-geshi c source-c">asctime_s<span class="br0">(</span>buf, bufsz, localtime_s<span class="br0">(</span>timer, <span class="sy3">&</span><span class="br0">(</span><span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a><span class="br0">)</span><span class="br0">{</span><span class="nu0">0</span><span class="br0">}</span><span class="br0">)</span><span class="br0">)</span></span></span> 。并在运行时检测下列错误并调用当前安装的<a href="c-error-set_constraint_handler_s.html">制约处理</a>函数:
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><code>buf</code> 或 <code>timer</code> 为空指针</li>
|
||||
<li><code>bufsz</code> 小于 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">26</span></span></span> 或大于 <span class="t-lc">RSIZE_MAX</span></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dd>同所有边界检查函数, <code>ctime_s</code> 仅若实现定义 <span class="t-c"><span class="mw-geshi c source-c">__STDC_LIB_EXT1__</span></span> 且用户在包含 <code>time.h</code> 前定义 <span class="t-c"><span class="mw-geshi c source-c">__STDC_WANT_LIB_EXT1__</span></span> 为整数常量 1 才保证可用。</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<p>结果字符串拥有下列格式:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1">Www Mmm dd hh<span class="sy4">:</span>mm<span class="sy4">:</span>ss yyyy\n</pre></div>
|
||||
</div>
|
||||
<ul>
|
||||
<li><code>Www</code> ——星期( <code>Mon</code> 、 <code>Tue</code> 、 <code>Wed</code> 、 <code>Thu</code> 、 <code>Fri</code> 、 <code>Sat</code> 、 <code>Sun</code> 之一)。</li>
|
||||
<li><code>Mmm</code> ——月份( <code>Jan</code> 、 <code>Feb</code> 、 <code>Mar</code> 、 <code>Apr</code> 、 <code>May</code> 、 <code>Jun</code> 、 <code>Jul</code> 、 <code>Aug</code> 、 <code>Sep</code> 、 <code>Oct</code> 、 <code>Nov</code> 、 <code>Dec</code> 之一)。</li>
|
||||
<li><code>dd</code> ——月之日</li>
|
||||
<li><code>hh</code> ——时</li>
|
||||
<li><code>mm</code> ——分</li>
|
||||
<li><code>ss</code> ——秒</li>
|
||||
<li><code>yyyy</code> ——年</li>
|
||||
</ul>
|
||||
<p>函数不支持本地化。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>timer</td>
|
||||
<td>-</td>
|
||||
<td>指向指定待打印时间的 <span class="t-lc"><a href="c-chrono-time_t.html">time_t</a></span> 对象的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>buf</td>
|
||||
<td>-</td>
|
||||
<td>指向大小至少为 <code>bufsz</code> 的 char 数组首元素的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>bufsz</td>
|
||||
<td>-</td>
|
||||
<td>输出的最大字节数,常为 <code>buf</code> 所指向的缓冲区的大小</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 指向保有日期与时间的文本表示的静态空终止字符串的指针。该字符串可能在 <span class="t-lc"><a href="c-chrono-asctime.html">asctime</a></span> 与 <code>ctime</code> 之间共享,且可能在每次调用任何这些函数时被重写。</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> <code>buf</code> ,在返回后指向保有日期与时间的文本表示的空终止字符串。</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 成功时为零(该情况下将日期与时间的字符串表示写到 <code>buf</code> 所指向的数组),或在失败时为非零(该情况下始终写入空终止字符到 <span class="t-c"><span class="mw-geshi c source-c">buf<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span></span></span> ,除非 <code>buf</code> 为空指针或 <code>bufsz</code> 为零或大于 <span class="t-lc">RSIZE_MAX</span> )。</div>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">注解</span></h3>
|
||||
<p><code>ctime</code> 返回指向静态数据的指针且非线程安全。另外,它修改可能与 <span class="t-lc"><a href="c-chrono-gmtime.html">gmtime</a></span> 及 <span class="t-lc"><a href="c-chrono-localtime.html">localtime</a></span> 共享的静态 <span class="t-lc"><a href="c-chrono-tm.html">tm</a></span> 对象。 POSIX 标记此函数为过时并推荐 <span class="t-lc"><a href="c-chrono-strftime.html">strftime</a></span> 代替。 C 标准亦推荐 <span class="t-lc"><a href="c-chrono-strftime.html">strftime</a></span> 代替 <code>ctime</code> 、 <code>ctime_r</code> 和 <code>ctime_s</code> ,因 <code>strftime</code> 更灵活且为本地环境相关。</p>
|
||||
<p><code>ctime</code> 与 <code>ctime_r</code> 的行为对于导致字符串长于 25 字符的 <span class="t-lc"><a href="c-chrono-time_t.html">time_t</a></span> 值(例如 10000 年)未定义。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#define __STDC_WANT_LIB_EXT1__ 1</span>
|
||||
<span class="co2">#include <time.h></span>
|
||||
<span class="co2">#include <stdio.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-chrono-time_t.html"><span class="kw523">time_t</span></a> result <span class="sy1">=</span> <a href="c-chrono-time.html"><span class="kw513">time</span></a><span class="br0">(</span><a href="c-types-NULL.html"><span class="kw103">NULL</span></a><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"%s"</span>, ctime<span class="br0">(</span><span class="sy3">&</span>result<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="co2">#ifdef __STDC_LIB_EXT1__</span>
|
||||
<span class="kw4">char</span> str<span class="br0">[</span><span class="nu0">26</span><span class="br0">]</span><span class="sy4">;</span>
|
||||
ctime_s<span class="br0">(</span>str,<span class="kw4">sizeof</span> str,<span class="sy3">&</span>result<span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"%s"</span>, str<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="co2">#endif</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">Tue May 26 21:51:03 2015
|
||||
Tue May 26 21:51:03 2015</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-17">
|
||||
<ul>
|
||||
<li>C17 标准(ISO/IEC 9899:2018):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.27.3.2 The ctime function (p: 287-288)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.8.2.2 The ctime_s function (p: 454)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.27.3.2 The ctime function (p: 393)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.8.2.2 The ctime_s function (p: 626)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.23.3.2 The ctime function (p: 342)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.12.3.2 The ctime function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-asctime.html"><span class="t-lines"><span>asctime</span><span>asctime_r</span><span>asctime_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c23">(C23)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将 <code>struct tm</code> 对象转换成文本表示<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-strftime.html"><span class="t-lines"><span>strftime</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将 <code>struct tm</code> 对象转换成自定义文本表示<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,133 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>difftime</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_chrono_difftime skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">difftime</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-chrono.html">chrono</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><time.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">double</span> difftime<span class="br0">(</span> <a href="c-chrono-time_t.html"><span class="kw523">time_t</span></a> time_end, <a href="c-chrono-time_t.html"><span class="kw523">time_t</span></a> time_beg <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>以秒数计算二个作为 <span class="t-lc"><a href="c-chrono-time_t.html">time_t</a></span> 对象的日历时间的差( <span class="t-c"><span class="mw-geshi c source-c">time_end <span class="sy2">-</span> time_beg</span></span> )。若 <code>time_end</code> 代表先于 <code>time_beg</code> 的时间点,则结果为负。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>time_beg, time_end</td>
|
||||
<td>-</td>
|
||||
<td>待比较的时间</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>两时间之差的秒数。</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h3>
|
||||
<p>在 POSIX 系统上,<span class="t-lc"><a href="c-chrono-time_t.html">time_t</a></span> 以秒计量,而 <code>difftime</code> 等价于算术减法,但 C 和 C++ 允许小数单位的 <code>time_t</code> 。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<p>以下程序计算从月初开始经过的秒数。</p>
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <time.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-chrono-time_t.html"><span class="kw523">time_t</span></a> now<span class="sy4">;</span>
|
||||
<a href="c-chrono-time.html"><span class="kw512">time</span></a><span class="br0">(</span><span class="sy3">&</span>now<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a> beg<span class="sy4">;</span>
|
||||
beg <span class="sy1">=</span> <span class="sy2">*</span><a href="c-chrono-localtime.html"><span class="kw519">localtime</span></a><span class="br0">(</span><span class="sy3">&</span>now<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="co1">// 设 beg 为月初</span>
|
||||
beg.<span class="me1">tm_hour</span> <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
|
||||
beg.<span class="me1">tm_min</span> <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
|
||||
beg.<span class="me1">tm_sec</span> <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
|
||||
beg.<span class="me1">tm_mday</span> <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw4">double</span> seconds <span class="sy1">=</span> difftime<span class="br0">(</span>now, <a href="c-chrono-mktime.html"><span class="kw520">mktime</span></a><span class="br0">(</span><span class="sy3">&</span>beg<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"%.f seconds have passed since the beginning of the month.<span class="es1">\n</span>"</span>, seconds<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw1">return</span> <span class="nu0">0</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">1937968 seconds have passed since the beginning of the month.</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.27.2.2 The difftime function (p: 390)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.23.2.2 The difftime function (p: 339)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.12.2.2 The difftime function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,201 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>gmtime, gmtime_r, gmtime_s</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_chrono_gmtime skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">gmtime, gmtime_r, gmtime_s</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-chrono.html">chrono</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><time.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a> <span class="sy2">*</span>gmtime <span class="br0">(</span> <span class="kw4">const</span> <a href="c-chrono-time_t.html"><span class="kw523">time_t</span></a> <span class="sy2">*</span>timer <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(1)</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c23">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a> <span class="sy2">*</span>gmtime_r<span class="br0">(</span> <span class="kw4">const</span> <a href="c-chrono-time_t.html"><span class="kw523">time_t</span></a> <span class="sy2">*</span>timer, <span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a> <span class="sy2">*</span>buf <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(2)</td>
|
||||
<td><span class="t-mark-rev t-since-c23">(C23 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a> <span class="sy2">*</span>gmtime_s<span class="br0">(</span> <span class="kw4">const</span> <a href="c-chrono-time_t.html"><span class="kw523">time_t</span></a> <span class="sy2">*</span><span class="kw4">restrict</span> timer, <span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a> <span class="sy2">*</span><span class="kw4">restrict</span> buf <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(3)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 转换从纪元开始的给定时间( <code>time</code> 所指向的 <span class="t-lc"><a href="c-chrono-time_t.html">time_t</a></span> 的值),以 <a href="c-chrono-tm.html">struct tm</a> 格式表示成协调世界时( UTC )。存储结果于静态存储,并返回指向静态存储的指针。</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 同 <span class="t-v">(1)</span> ,除了函数使用用户为结果提供的存储 <code>buf</code> 。</div>
|
||||
<div class="t-li1"><span class="t-li">3)</span> 同 <span class="t-v">(1)</span> ,除了函数使用用户为结果提供的存储 <code>buf</code> ,还在运行时检测下列错误,并调用当前安装的<a href="c-error-set_constraint_handler_s.html">制约处理</a>函数:
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><code>timer</code> 或 <code>buf</code> 是空指针</li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dd>同所有边界检查函数, <code>gmtime_s</code> 仅若实现定义 <span class="t-c"><span class="mw-geshi c source-c">__STDC_LIB_EXT1__</span></span> 且用户在包含 <code>time.h</code> 前定义 <span class="t-c"><span class="mw-geshi c source-c">__STDC_WANT_LIB_EXT1__</span></span> 为整数常量 1 才保证可用。</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>timer</td>
|
||||
<td>-</td>
|
||||
<td>指向要转换的 <code>time_t</code> 对象的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>buf</td>
|
||||
<td>-</td>
|
||||
<td>指向要存储结果的 <code>struct tm</code> 对象的指针</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 成功时返回指向静态的内部 <span class="t-lc">struct tm</span> 对象的指针,失败时返回空指针。该结构体可能会为 <code>gmtime</code> 、 <span class="t-lc"><a href="c-chrono-localtime.html">localtime</a></span> 以及 <span class="t-lc"><a href="c-chrono-ctime.html">ctime</a></span> 所共享,并于每次调用时被覆盖。</div>
|
||||
<div class="t-li1"><span class="t-li">2-3)</span> 成功时返回 <code>buf</code> 指针的副本,错误时返回空指针(可能是一个运行时制约违规或对指定时间到 UTC 的转换失败)。</div>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">注解</span></h3>
|
||||
<p>函数 <code>gmtime</code> 可能不是线程安全的。</p>
|
||||
<p>POSIX 要求 <code>gmtime</code> 与 <code>gmtime_r</code> 函数若因参数过大而失败,则设置 <span class="t-lc"><a href="c-error-errno.html">errno</a></span> 为 <span class="t-lc"><a href="c-error-errno_macros.html">EOVERFLOW</a></span> 。</p>
|
||||
<p><a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s?view=vs-2019">Microsoft CRT</a> 中 <code>gmtime_s</code> 的实现与 C 标准不兼容,因为它有相反的参数顺序。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#define __STDC_WANT_LIB_EXT1__ 1</span>
|
||||
<span class="co2">#include <time.h></span>
|
||||
<span class="co2">#include <stdio.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-chrono-time_t.html"><span class="kw523">time_t</span></a> t <span class="sy1">=</span> <a href="c-chrono-time.html"><span class="kw513">time</span></a><span class="br0">(</span><a href="c-types-NULL.html"><span class="kw103">NULL</span></a><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"UTC: %s"</span>, <a href="c-chrono-asctime.html"><span class="kw515">asctime</span></a><span class="br0">(</span>gmtime<span class="br0">(</span><span class="sy3">&</span>t<span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"local: %s"</span>, <a href="c-chrono-asctime.html"><span class="kw515">asctime</span></a><span class="br0">(</span><a href="c-chrono-localtime.html"><span class="kw519">localtime</span></a><span class="br0">(</span><span class="sy3">&</span>t<span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="co2">#ifdef __STDC_LIB_EXT1__</span>
|
||||
<span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a> buf<span class="sy4">;</span>
|
||||
<span class="kw4">char</span> str<span class="br0">[</span><span class="nu0">26</span><span class="br0">]</span><span class="sy4">;</span>
|
||||
asctime_s<span class="br0">(</span>str,<span class="kw4">sizeof</span> str,gmtime_s<span class="br0">(</span><span class="sy3">&</span>t, <span class="sy3">&</span>buf<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"UTC: %s"</span>, str<span class="br0">)</span><span class="sy4">;</span>
|
||||
asctime_s<span class="br0">(</span>str,<span class="kw4">sizeof</span> str,localtime_s<span class="br0">(</span><span class="sy3">&</span>t, <span class="sy3">&</span>buf<span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"local: %s"</span>, str<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="co2">#endif</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">UTC: Tue Feb 17 18:12:09 2015
|
||||
local: Tue Feb 17 13:12:09 2015
|
||||
UTC: Tue Feb 17 18:12:09 2015
|
||||
local: Tue Feb 17 13:12:09 2015</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-17">
|
||||
<ul>
|
||||
<li>C17 标准(ISO/IEC 9899:2018):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.27.3.3 The gmtime function (p: 288)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.8.2.3 The gmtime_s function (p: 454-455)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.27.3.3 The gmtime function (p: 393-394)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.8.2.3 The gmtime_s function (p: 626-627)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.23.3.3 The gmtime function (p: 343)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.12.3.3 The gmtime function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-localtime.html"><span class="t-lines"><span>localtime</span><span>localtime_r</span><span>localtime_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c23">(C23)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将从纪元开始的时间转换成以本地时间表示的日历时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,202 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>localtime, localtime_r, localtime_s</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_chrono_localtime skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">localtime, localtime_r, localtime_s</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-chrono.html">chrono</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><time.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a> <span class="sy2">*</span>localtime <span class="br0">(</span> <span class="kw4">const</span> <a href="c-chrono-time_t.html"><span class="kw523">time_t</span></a> <span class="sy2">*</span>timer <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(1)</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c23">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a> <span class="sy2">*</span>localtime_r<span class="br0">(</span> <span class="kw4">const</span> <a href="c-chrono-time_t.html"><span class="kw523">time_t</span></a> <span class="sy2">*</span>timer, <span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a> <span class="sy2">*</span>buf <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(2)</td>
|
||||
<td><span class="t-mark-rev t-since-c23">(C23 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">error_t localtime_s<span class="br0">(</span> <span class="kw4">const</span> <a href="c-chrono-time_t.html"><span class="kw523">time_t</span></a> <span class="sy2">*</span><span class="kw4">restrict</span> timer, <span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a> <span class="sy2">*</span><span class="kw4">restrict</span> buf <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(3)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 转换给定的纪元起的时间( <code>timer</code> 所指向的 <span class="t-lc"><a href="c-chrono-time_t.html">time_t</a></span> 值)为以 <a href="c-chrono-tm.html"><code>struct tm</code></a> 格式表达为本地时间的日历时间。存储结果于静态存储中并返回指向该静态存储的指针。</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 同 <span class="t-v">(1)</span> ,除了函数对结果使用用户提供的存储 <code>buf</code> 。</div>
|
||||
<div class="t-li1"><span class="t-li">3)</span> 同 <span class="t-v">(1)</span> ,除了函数对结果使用用户提供的存储 <code>buf</code> 。并且在运行时检测下列错误并调用当前安装的<a href="c-error-set_constraint_handler_s.html">制约处理</a>函数:
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><code>timer</code> 或 <code>buf</code> 为空指针</li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dd>同所有边界检查函数, <code>localtime_s</code> 仅若实现定义 <span class="t-c"><span class="mw-geshi c source-c">__STDC_LIB_EXT1__</span></span> 且用户在包含 <code>time.h</code> 前定义 <span class="t-c"><span class="mw-geshi c source-c">__STDC_WANT_LIB_EXT1__</span></span> 为整数常量 1 才保证可用。</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>timer</td>
|
||||
<td>-</td>
|
||||
<td>指向待转换的 <code>time_t</code> 对象的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>buf</td>
|
||||
<td>-</td>
|
||||
<td>指向待存储结果的 <code>struct tm</code> 对象的的指针</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 成功时为指向静态内部 <span class="t-lc"><a href="c-chrono-tm.html">tm</a></span> 对象的指针,否则为空指针。该结构体可能在 <span class="t-lc"><a href="c-chrono-gmtime.html">gmtime</a></span> 、 <code>localtime</code> 及 <span class="t-lc"><a href="c-chrono-ctime.html">ctime</a></span> 间共享并可能在每次调用时被重写。</div>
|
||||
<div class="t-li1"><span class="t-li">2-3)</span> <code>buf</code> 指针的副本,或在错误(可能为运行时制约违规或转换指定时间为日历时间失败)时为空指针</div>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">注解</span></h3>
|
||||
<p>函数 <code>localtime</code> 可以不是线程安全的。</p>
|
||||
<p>POSIX 要求 <code>localtime</code> 与 <code>localtime_r</code> 若因为参数过大而失败则设置 <span class="t-lc"><a href="c-error-errno.html">errno</a></span> 为 <span class="t-lc"><a href="c-error-errno_macros.html">EOVERFLOW</a></span> 。</p>
|
||||
<p><a rel="nofollow" class="external text" href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/localtime.html">POSIX 指定</a> <code>localtime</code> 与 <code>localtime_r</code> 如同通过调用 <a rel="nofollow" class="external text" href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/tzset.html">tzset</a> 确定时区信息,该函数读取环境变量 <span class="t-c"><span class="mw-geshi c source-c">TZ</span></span> 。</p>
|
||||
<p><a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s?view=vs-2019">Microsoft CRT</a> 中的 <code>localtime_s</code> 实现与 C 标准不兼容,因为它有相反的参数顺序。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#define __STDC_WANT_LIB_EXT1__ 1</span>
|
||||
<span class="co2">#include <time.h></span>
|
||||
<span class="co2">#include <stdio.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-chrono-time_t.html"><span class="kw523">time_t</span></a> t <span class="sy1">=</span> <a href="c-chrono-time.html"><span class="kw513">time</span></a><span class="br0">(</span><a href="c-types-NULL.html"><span class="kw103">NULL</span></a><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"UTC: %s"</span>, <a href="c-chrono-asctime.html"><span class="kw515">asctime</span></a><span class="br0">(</span><a href="c-chrono-gmtime.html"><span class="kw519">gmtime</span></a><span class="br0">(</span><span class="sy3">&</span>t<span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"local: %s"</span>, <a href="c-chrono-asctime.html"><span class="kw515">asctime</span></a><span class="br0">(</span>localtime<span class="br0">(</span><span class="sy3">&</span>t<span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="co2">#ifdef __STDC_LIB_EXT1__</span>
|
||||
<span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a> buf<span class="sy4">;</span>
|
||||
<span class="kw4">char</span> str<span class="br0">[</span><span class="nu0">26</span><span class="br0">]</span><span class="sy4">;</span>
|
||||
asctime_s<span class="br0">(</span>str,<span class="kw4">sizeof</span> str,gmtime_s<span class="br0">(</span><span class="sy3">&</span>t, <span class="sy3">&</span>buf<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"UTC: %s"</span>, str<span class="br0">)</span><span class="sy4">;</span>
|
||||
asctime_s<span class="br0">(</span>str,<span class="kw4">sizeof</span> str,localtime_s<span class="br0">(</span><span class="sy3">&</span>t, <span class="sy3">&</span>buf<span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"local: %s"</span>, str<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="co2">#endif</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">UTC: Tue Feb 17 18:12:09 2015
|
||||
local: Tue Feb 17 13:12:09 2015
|
||||
UTC: Tue Feb 17 18:12:09 2015
|
||||
local: Tue Feb 17 13:12:09 2015</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-17">
|
||||
<ul>
|
||||
<li>C17 标准(ISO/IEC 9899:2018):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.27.3.4 The localtime function (p: 288)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.8.2.4 The localtime_s function (p: 455)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.27.3.4 The localtime function (p: 394)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.8.2.4 The localtime_s function (p: 627)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.23.3.4 The localtime function (p: 343)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.12.3.4 The localtime function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-gmtime.html"><span class="t-lines"><span>gmtime</span><span>gmtime_r</span><span>gmtime_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c23">(C23)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将从纪元开始的时间转换成以协调世界时(UTC)表示的日历时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,142 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>mktime</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_chrono_mktime skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">mktime</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-chrono.html">chrono</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><time.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><a href="c-chrono-time_t.html"><span class="kw523">time_t</span></a> mktime<span class="br0">(</span> <span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a> <span class="sy2">*</span><a href="c-chrono-time.html"><span class="kw513">time</span></a> <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>重整化表示成 <span class="t-lc"><a href="c-chrono-tm.html">struct tm</a></span> 的本地日历时间,并将其转化成从纪元开始经过时间的 <span class="t-lc"><a href="c-chrono-time_t.html">time_t</a></span> 对象格式。忽略 <code>time->tm_wday</code> 与 <code>time->tm_yday</code> 。容许 <code>time</code> 中的值在其正常范围外。</p>
|
||||
<p><code>time->tm_isdst</code> 的负值会导致 <code>mktime</code> 尝试确定在指定时间夏时令是否有效。</p>
|
||||
<p>若转换到 <code>time_t</code> 成功,则修改 <code>time</code> 会被修改。更新 <code>time</code> 的所有域为符合其正确范围的值。用可用于其他域的信息重新计算 <code>time->tm_wday</code> 与 <code>time->tm_yday</code> 。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>time</td>
|
||||
<td>-</td>
|
||||
<td>指向 <span class="t-lc">struct tm</span> 对象的指针,它指定要转换的本地日历时间</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>成功时返回表示从纪元开始时间的 <span class="t-lc"><a href="c-chrono-time_t.html">time_t</a></span> 对象,若 <code>time</code> 不能表示成 <span class="t-lc"><a href="c-chrono-time_t.html">time_t</a></span> 对象则返回 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">-</span><span class="nu0">1</span></span></span> ( POSIX 亦要求此情况下存储 <code>EOVERFLOW</code> 于 <span class="t-lc"><a href="c-error-errno.html">errno</a></span> 中)。</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h3>
|
||||
<p>若 <span class="t-lc"><a href="c-chrono-tm.html">struct tm</a></span> 对象是由 POSIX <a rel="nofollow" class="external text" href="http://pubs.opengroup.org/onlinepubs/009695399/functions/strptime.html">strptime</a> 或等价的函数取得的,则 <code>tm_isdst</code> 的值不确定,并需要在调用 <code>mktime</code> 前显式设置。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#define _POSIX_C_SOURCE 200112L // 为 GCC 的 setenv</span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
<span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <time.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
setenv<span class="br0">(</span><span class="st0">"TZ"</span>, <span class="st0">"/usr/share/zoneinfo/America/New_York"</span>, <span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// POSIX 限定</span>
|
||||
|
||||
<span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a> <span class="sy1">=</span> <span class="sy2">*</span><a href="c-chrono-localtime.html"><span class="kw520">localtime</span></a><span class="br0">(</span><span class="sy3">&</span><span class="br0">(</span><a href="c-chrono-time_t.html"><span class="kw523">time_t</span></a><span class="br0">)</span><span class="br0">{</span><a href="c-chrono-time.html"><span class="kw513">time</span></a><span class="br0">(</span><a href="c-types-NULL.html"><span class="kw103">NULL</span></a><span class="br0">)</span><span class="br0">}</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"Today is %s"</span>, <a href="c-chrono-asctime.html"><span class="kw515">asctime</span></a><span class="br0">(</span><span class="sy3">&</span><a href="c-chrono-tm.html"><span class="kw522">tm</span></a><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"(DST is %s)<span class="es1">\n</span>"</span>, <a href="c-chrono-tm.html"><span class="kw522">tm</span></a>.<span class="me1">tm_isdst</span> <span class="sy4">?</span> <span class="st0">"in effect"</span> <span class="sy4">:</span> <span class="st0">"not in effect"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-chrono-tm.html"><span class="kw522">tm</span></a>.<span class="me1">tm_mon</span> <span class="sy2">-</span><span class="sy1">=</span> <span class="nu0">100</span><span class="sy4">;</span> <span class="co1">// tm_mon 落在正常范围外</span>
|
||||
mktime<span class="br0">(</span><span class="sy3">&</span><a href="c-chrono-tm.html"><span class="kw522">tm</span></a><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// tm_dst 不被设为 -1 ;使用今日的 DST 状态</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"100 months ago was %s"</span>, <a href="c-chrono-asctime.html"><span class="kw515">asctime</span></a><span class="br0">(</span><span class="sy3">&</span><a href="c-chrono-tm.html"><span class="kw522">tm</span></a><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"(DST was %s)<span class="es1">\n</span>"</span>, <a href="c-chrono-tm.html"><span class="kw522">tm</span></a>.<span class="me1">tm_isdst</span> <span class="sy4">?</span> <span class="st0">"in effect"</span> <span class="sy4">:</span> <span class="st0">"not in effect"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">Today is Fri Apr 22 11:53:36 2016
|
||||
(DST is in effect)
|
||||
100 months ago was Sat Dec 22 10:53:36 2007
|
||||
(DST was not in effect)</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.27.2.3 The mktime function (p: 390-391)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.23.2.3 The mktime function (p: 340-341)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.12.2.3 The mktime function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-localtime.html"><span class="t-lines"><span>localtime</span><span>localtime_r</span><span>localtime_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c23">(C23)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将从纪元开始的时间转换成以本地时间表示的日历时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,578 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>strftime</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_chrono_strftime skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">strftime</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-chrono.html">chrono</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><time.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody class="t-dcl-rev">
|
||||
<tr class="t-dcl t-until-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><a href="c-types-size_t.html"><span class="kw100">size_t</span></a> strftime<span class="br0">(</span> <span class="kw4">char</span> <span class="sy2">*</span> str, <a href="c-types-size_t.html"><span class="kw100">size_t</span></a> count,<br />
|
||||
<span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span> format, <span class="kw4">const</span> <span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a> <span class="sy2">*</span> <a href="c-chrono-time.html"><span class="kw513">time</span></a> <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-until-c99">(C99 前)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><a href="c-types-size_t.html"><span class="kw100">size_t</span></a> strftime<span class="br0">(</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> str, <a href="c-types-size_t.html"><span class="kw100">size_t</span></a> count,<br />
|
||||
<span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> format, <span class="kw4">const</span> <span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a> <span class="sy2">*</span><span class="kw4">restrict</span> <a href="c-chrono-time.html"><span class="kw513">time</span></a> <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>按照格式字符串 <code>format</code> ,转换来自给定的日历时间 <code>time</code> 的日期和时间信息,为空终止多字节字符串 <code>str</code> 。最多写入 <code>count</code> 字节。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>str</td>
|
||||
<td>-</td>
|
||||
<td>指向待输出 <code>char</code> 数组首元素的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>count</td>
|
||||
<td>-</td>
|
||||
<td>最大写入字节数</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>format</td>
|
||||
<td>-</td>
|
||||
<td>指向指定转换格式的空终止多字节字符串指针。
|
||||
<p>格式字符串由零或更多个说明符和通常字符(除 <code>%</code> )构成。所有通常字符,包括空终止字符,都会被复制到输出字符串而不加修改。每个转换说明符都始于 <code>%</code> 字符,可选地跟随 <code>E</code> 或 <code>O</code> 修饰符(若本地环境不支持则忽略),后随决定修饰符行为的字符。下列修饰符格式可用:</p>
|
||||
<table class="wikitable" style="font-size:85%; max-width:90em;">
|
||||
<tr>
|
||||
<th>转换<br />
|
||||
说明符</th>
|
||||
<th>解释</th>
|
||||
<th>使用的域</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>%</code></th>
|
||||
<td>写字面的 <code>%</code> 。完整转换说明必须是 <code>%%</code> 。</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>n</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>写换行符</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>t</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>写水平制表符</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="3">年</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Y</code></th>
|
||||
<td>以 4 位十进制数写<b>年</b>。</td>
|
||||
<td><code><b>tm_year</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>EY</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用方式写<b>年</b>。例如在 ja_JP 本地环境中,以“平成23年”取代“2011年”。</td>
|
||||
<td><code><b>tm_year</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>y</code></th>
|
||||
<td>写<b>年</b>的末 2 位十进制数(范围<code>[00,99]</code>)。</td>
|
||||
<td><code><b>tm_year</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Oy</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用数字系统写<b>年</b>的末 2 位数字。例如在 ja_JP 本地环境中以“十一”取代“11”。</td>
|
||||
<td><code><b>tm_year</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Ey</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>将<b>年</b>写作从本地环境的替用时期 <code>%EC</code> 的偏移(本地环境依赖)。</td>
|
||||
<td><code><b>tm_year</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>C</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>写<b>年</b>的首 2 位十进制数(范围 <code>[00,99]</code> )。</td>
|
||||
<td><code><b>tm_year</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>EC</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以本地环境的替用表示写<b>年份基底(时期)</b>,例如 ja_JP 中的“平成”。</td>
|
||||
<td><code><b>tm_year</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>G</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>写<b>基于 ISO 8601 的年</b>,即是包含指定星期的年份。
|
||||
<p>IS0 8601 中星期以星期一开始,而且一年的首星期必须满足下列要求:</p>
|
||||
<ul>
|
||||
<li>包含 1 月 4 日</li>
|
||||
<li>包含一年的首个星期四</li>
|
||||
</ul>
|
||||
</td>
|
||||
<td><code><b>tm_year</b></code>, <code><b>tm_wday</b></code>, <code><b>tm_yday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>g</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>写<b>基于 ISO 8601 的年</b>,即是包含指定星期年份,的后 2 位数(范围 <code>[00,99]</code> )。
|
||||
<p>IS0 8601 中星期以星期一开始,而且一年的首星期必须满足下列要求:</p>
|
||||
<ul>
|
||||
<li>包含 1 月 4 日</li>
|
||||
<li>包含一年的首个星期四</li>
|
||||
</ul>
|
||||
</td>
|
||||
<td><code><b>tm_year</b></code>, <code><b>tm_wday</b></code>, <code><b>tm_yday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="3">月</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>b</code></th>
|
||||
<td>写<b>缩略月</b>名,例如 <code>Oct</code> (本地环境依赖)。</td>
|
||||
<td><code><b>tm_mon</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Ob</code><br />
|
||||
<span class="t-mark-rev t-since-c23">(C23)</span></th>
|
||||
<td>以本地环境的替用表示写<b>缩写月</b>名</td>
|
||||
<td><code><b>tm_mon</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>h</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>与 <code>b</code> 同意。</td>
|
||||
<td><code><b>tm_mon</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>B</code></th>
|
||||
<td>写<b>完整月</b>名,例如 <code>October</code> (本地环境依赖)。</td>
|
||||
<td><code><b>tm_mon</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>OB</code><br />
|
||||
<span class="t-mark-rev t-since-c23">(C23)</span></th>
|
||||
<td>以本地环境的替用表示写适合的<b>完整月</b>名</td>
|
||||
<td><code><b>tm_mon</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>m</code></th>
|
||||
<td>将<b>月</b>写作十进制数(范围 <code>[01,12]</code> )。</td>
|
||||
<td><code><b>tm_mon</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Om</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用数字系统写<b>月</b>。例如 ja_JP 本地环境中“十二”取代“12”。</td>
|
||||
<td><code><b>tm_mon</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="3">星期</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>U</code></th>
|
||||
<td>以十进制数写<b>年的星期</b>(星期日是星期的首日)(范围 <code>[00,53]</code> )。</td>
|
||||
<td><code><b>tm_year</b></code>, <code><b>tm_wday</b></code>, <code><b>tm_yday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>OU</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用数值系统写如同用 <code>%U</code> 的<b>年的星期</b>。例如“五十二”在 ja_JP 本地环境中取代“52”。</td>
|
||||
<td><code><b>tm_year</b></code>, <code><b>tm_wday</b></code>, <code><b>tm_yday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>W</code></th>
|
||||
<td>以十进制数写<b>年的星期</b>(星期一是星期的首日)(范围 <code>[00,53]</code> )。</td>
|
||||
<td><code><b>tm_year</b></code>, <code><b>tm_wday</b></code>, <code><b>tm_yday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>OW</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用数值系统写如同用 <code>%W</code> 的<b>年的第星期</b>。例如“五十二”在 ja_JP 本地环境中取代“52”。</td>
|
||||
<td><code><b>tm_year</b></code>, <code><b>tm_wday</b></code>, <code><b>tm_yday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>V</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>写 <b>ISO 8601 的年的星期</b>(范围<code>[00,53]</code>)。
|
||||
<p>IS0 8601 中星期以星期一开始,而且一年的首星期必须满足下列要求:</p>
|
||||
<ul>
|
||||
<li>包含 1 月 4 日</li>
|
||||
<li>包含一年的首个星期四</li>
|
||||
</ul>
|
||||
</td>
|
||||
<td><code><b>tm_year</b></code>, <code><b>tm_wday</b></code>, <code><b>tm_yday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>OV</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用数值系统写如同用 <code>%V</code> 的<b>年的星期</b>。例如“五十二”在 ja_JP 本地环境中取代“52”。</td>
|
||||
<td><code><b>tm_year</b></code>, <code><b>tm_wday</b></code>, <code><b>tm_yday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="3">年/月之日</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>j</code></th>
|
||||
<td>以十进制数写<b>年的第几日</b>(范围 <code>[001,366]</code> )。</td>
|
||||
<td><code><b>tm_yday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>d</code></th>
|
||||
<td>以十进制数写<b>月的第几日</b>(范围 <code>[01,31]</code> )。</td>
|
||||
<td><code><b>tm_mday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Od</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用数字系统写零基的<b>月的第几日</b>。例如 ja_JP 本地环境中“二十七”取代“ 27 ”。
|
||||
<p>单字符前加空格。</p>
|
||||
</td>
|
||||
<td><code><b>tm_mday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>e</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以十进制数写<b>月的第几日</b>(范围<code>[01,31]</code>)。
|
||||
<p>单数字前加空格。</p>
|
||||
</td>
|
||||
<td><code><b>tm_mday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Oe</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用数字系统写一基的<b>月的第几日</b>。例如 ja_JP 本地环境中“二十七”取代“27”。
|
||||
<p>单字符前加空格。</p>
|
||||
</td>
|
||||
<td><code><b>tm_mday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="3">星期之日</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>a</code></th>
|
||||
<td>写<b>缩略的星期日期</b>名,例如 <code>Fri</code> (本地环境依赖)。</td>
|
||||
<td><code><b>tm_wday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>A</code></th>
|
||||
<td>写<b>完整的星期日期</b>名,例如 <code>Friday</code> (本地环境依赖)。</td>
|
||||
<td><code><b>tm_wday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>w</code></th>
|
||||
<td>以十进制数写<b>星期日期</b>,其中星期日是 <code>0</code> (范围 <code>[0-6]</code> )。</td>
|
||||
<td><code><b>tm_wday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Ow</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>用替用数字系统写<b>星期日期</b>,其中星期日是 <code>0</code> 。例如 ja_JP 本地环境中“二”取代“2”。</td>
|
||||
<td><code><b>tm_wday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>u</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>十进制数写<b>星期日期</b>,其中星期一是 <code>1</code> ( ISO 8601 格式)(范围 <code>[1-7]</code> )。</td>
|
||||
<td><code><b>tm_wday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Ou</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>用替用数字系统写<b>星期日期</b>,其中星期一是 <code>1</code> 。例如 ja_JP 本地环境中“二”取代“2”。</td>
|
||||
<td><code><b>tm_wday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="3">时、分、秒</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>H</code></th>
|
||||
<td>以十进制数写<b>时</b>, 24 小时制(范围 <code>[00-23]</code> )。</td>
|
||||
<td><code><b>tm_hour</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>OH</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用数字系统写 24 小时制的<b>时</b>。例如 ja_JP 本地环境中“十八”取代“18”。</td>
|
||||
<td><code><b>tm_hour</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>I</code></th>
|
||||
<td>以十进制数写<b>时</b>, 12 小时制(范围 <code>[01,12]</code> )。</td>
|
||||
<td><code><b>tm_hour</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>OI</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用数字系统写 12 小时制的<b>时</b>。例如 ja_JP 本地环境中“六”取代“6”。</td>
|
||||
<td><code><b>tm_hour</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>M</code></th>
|
||||
<td>以十进制数写<b>分</b>(范围 <code>[00,59]</code> )。</td>
|
||||
<td><code><b>tm_min</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>OM</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用数字系统写<b>分</b>。例如 ja_JP 本地环境中“二十五”取代“25”。</td>
|
||||
<td><code><b>tm_min</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>S</code></th>
|
||||
<td>以十进制数写<b>秒</b>(范围 <code>[00,60]</code> )。</td>
|
||||
<td><code><b>tm_sec</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>OS</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用数字系统写<b>秒</b>。例如 ja_JP 本地环境中“二十四”取代“24”。</td>
|
||||
<td><code><b>tm_sec</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="3">其他</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>c</code></th>
|
||||
<td>写<b>标准日期时间字符串</b>。例如 <code>Sun Oct 17 04:41:13 2010</code> (本地环境依赖)。</td>
|
||||
<td>全部</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Ec</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>写<b>替用日期时间字符串</b>。例如 ja_JP 本地环境中“平成23年”取代“2011年”。</td>
|
||||
<td>全部</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>x</code></th>
|
||||
<td>写本地化的<b>日期表示</b>(本地环境依赖)。</td>
|
||||
<td>全部</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Ex</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>写<b>替用日期表示</b>。例如 ja_JP 本地环境中“平成23年”取代“2011年”。</td>
|
||||
<td>全部</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>X</code></th>
|
||||
<td>写本地化的<b>时间表示</b>,例如 18:40:20 或 6:40:20 PM (本地环境依赖)。</td>
|
||||
<td>全部</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>EX</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>写<b>替用时间表示</b>(本地环境依赖)。</td>
|
||||
<td>全部</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>D</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>等价于<b>"%m/%d/%y"</b>。</td>
|
||||
<td><code><b>tm_mon</b></code>, <code><b>tm_mday</b></code>, <code><b>tm_year</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>F</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>等价于<b>"%Y-%m-%d"</b>( ISO 8601 日期格式)。</td>
|
||||
<td><code><b>tm_mon</b></code>, <code><b>tm_mday</b></code>, <code><b>tm_year</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>r</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>写本地化的 <b>12 小时制</b>时间(本地环境依赖)。</td>
|
||||
<td><code><b>tm_hour</b></code>, <code><b>tm_min</b></code>, <code><b>tm_sec</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>R</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>等价于<b>"%H:%M"</b>。</td>
|
||||
<td><code><b>tm_hour</b></code>, <code><b>tm_min</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>T</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>等价于<b>"%H:%M:%S"</b>( ISO 8601 时间格式)。</td>
|
||||
<td><code><b>tm_hour</b></code>, <code><b>tm_min</b></code>, <code><b>tm_sec</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>p</code></th>
|
||||
<td>写本地化的 <b>a.m.</b> 或 <b>p.m.</b> (本地环境依赖)。</td>
|
||||
<td><code><b>tm_hour</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>z</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以 ISO 8601 格式(例如 <code>-0430</code> )写<b>距 UTC 的偏移</b>,或者倘若时区信息不可用则不写字符。</td>
|
||||
<td><code><b>tm_isdst</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Z</code></th>
|
||||
<td>写依赖本地环境的<b>时区名或缩写</b>,或者若时区信息不可用则不写字符。</td>
|
||||
<td><code><b>tm_isdst</b></code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<p><br /></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>time</td>
|
||||
<td>-</td>
|
||||
<td>指向指定待格式化时间的 <code>struct tm</code> 对象</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>成功时,返回写入 <code>str</code> 所指向的字符数组的字节数,不包含终止 <span class="t-c"><span class="mw-geshi c source-c"><span class="st0">'<span class="es5">\0</span>'</span></span></span> 。若在能存储整个字符串前抵达 <code>count</code> ,则返回 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> ,写入内容是未定义的。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <time.h></span>
|
||||
<span class="co2">#include <locale.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw4">char</span> buff<span class="br0">[</span><span class="nu0">70</span><span class="br0">]</span><span class="sy4">;</span>
|
||||
<span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a> my_time <span class="sy1">=</span> <span class="br0">{</span> .<span class="me1">tm_year</span><span class="sy1">=</span><span class="nu0">112</span>, <span class="co1">// = 2012年</span>
|
||||
.<span class="me1">tm_mon</span><span class="sy1">=</span><span class="nu0">9</span>, <span class="co1">// = 10月</span>
|
||||
.<span class="me1">tm_mday</span><span class="sy1">=</span><span class="nu0">9</span>, <span class="co1">// = 9日</span>
|
||||
.<span class="me1">tm_hour</span><span class="sy1">=</span><span class="nu0">8</span>, <span class="co1">// = 8时</span>
|
||||
.<span class="me1">tm_min</span><span class="sy1">=</span><span class="nu0">10</span>, <span class="co1">// = 10分</span>
|
||||
.<span class="me1">tm_sec</span><span class="sy1">=</span><span class="nu0">20</span> <span class="co1">// = 20秒</span>
|
||||
<span class="br0">}</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw1">if</span> <span class="br0">(</span>strftime<span class="br0">(</span>buff, <span class="kw4">sizeof</span> buff, <span class="st0">"%A %c"</span>, <span class="sy3">&</span>my_time<span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span>
|
||||
<a href="c-io-puts.html"><span class="kw835">puts</span></a><span class="br0">(</span>buff<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span>
|
||||
<a href="c-io-puts.html"><span class="kw835">puts</span></a><span class="br0">(</span><span class="st0">"strftime failed"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
|
||||
<a href="c-locale-setlocale.html"><span class="kw900">setlocale</span></a><span class="br0">(</span><a href="c-locale-LC_categories.html"><span class="kw908">LC_TIME</span></a>, <span class="st0">"el_GR.utf8"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw1">if</span> <span class="br0">(</span>strftime<span class="br0">(</span>buff, <span class="kw4">sizeof</span> buff, <span class="st0">"%A %c"</span>, <span class="sy3">&</span>my_time<span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span>
|
||||
<a href="c-io-puts.html"><span class="kw835">puts</span></a><span class="br0">(</span>buff<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span>
|
||||
<a href="c-io-puts.html"><span class="kw835">puts</span></a><span class="br0">(</span><span class="st0">"strftime failed"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">Sunday Sun Oct 9 08:10:20 2012
|
||||
Κυριακή Κυρ 09 Οκτ 2012 08:10:20 πμ EST</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.27.3.5 The strftime function (p: 394-397)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.23.3.5 The strftime function (p: 343-347)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.12.3.5 The strftime function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-asctime.html"><span class="t-lines"><span>asctime</span><span>asctime_r</span><span>asctime_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c23">(C23)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将 <code>struct tm</code> 对象转换成文本表示<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-ctime.html"><span class="t-lines"><span>ctime</span><span>ctime_r</span><span>ctime_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c23">(C23)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将 <code>struct time_t</code> 对象转换成文本表示<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-wcsftime.html"><span class="t-lines"><span>wcsftime</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c95">(C95)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将 <code>struct tm</code> 对象转换成自定义宽字符文本表示<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,152 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>time</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_chrono_time skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">time</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-chrono.html">chrono</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><time.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><a href="c-chrono-time_t.html"><span class="kw523">time_t</span></a> time<span class="br0">(</span> <a href="c-chrono-time_t.html"><span class="kw523">time_t</span></a> <span class="sy2">*</span>arg <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>返回编码成 <span class="t-lc"><a href="c-chrono-time_t.html">time_t</a></span> 对象的当前日历时间,并将其存储于 <code>arg</code> 指向的 <span class="t-lc"><a href="c-chrono-time_t.html">time_t</a></span> 对象(除非 <code>arg</code> 为空指针)。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>arg</td>
|
||||
<td>-</td>
|
||||
<td>指向将存储时间的 <span class="t-lc"><a href="c-chrono-time_t.html">time_t</a></span> 对象的指针,或空指针</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>成功时返回编码成 <span class="t-lc"><a href="c-chrono-time_t.html">time_t</a></span> 对象的当前日历时间。错误时返回 <span class="t-c"><span class="mw-geshi c source-c"><span class="br0">(</span><a href="c-chrono-time_t.html"><span class="kw523">time_t</span></a><span class="br0">)</span><span class="br0">(</span><span class="sy2">-</span><span class="nu0">1</span><span class="br0">)</span></span></span> 。若<code>arg</code>不是空指针,则返回值也会存储于 <code>arg</code> 所指向的对象。</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h3>
|
||||
<p>日历时间在 <span class="t-lc"><a href="c-chrono-time_t.html">time_t</a></span> 中的编码是未指定的,但多数系统遵循 <a rel="nofollow" class="external text" href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/time.html">POSIX 规定</a>,返回保有从<a rel="nofollow" class="external text" href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_15">纪元</a>开始至今秒数的整数类型值。 <span class="t-lc"><a href="c-chrono-time_t.html">time_t</a></span> 为32位有符号整数的实现(许多历史上的实现)会在 <a rel="nofollow" class="external text" href="https://en.wikipedia.org/wiki/Year_2038_problem">2038</a> 年出错。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <time.h></span>
|
||||
<span class="co2">#include <stdint.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-chrono-time_t.html"><span class="kw523">time_t</span></a> result <span class="sy1">=</span> time<span class="br0">(</span><a href="c-types-NULL.html"><span class="kw103">NULL</span></a><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">if</span><span class="br0">(</span>result <span class="sy3">!</span><span class="sy1">=</span> <span class="br0">(</span><a href="c-chrono-time_t.html"><span class="kw523">time_t</span></a><span class="br0">)</span><span class="br0">(</span><span class="sy2">-</span><span class="nu0">1</span><span class="br0">)</span><span class="br0">)</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"The current time is %s(%jd seconds since the Epoch)<span class="es1">\n</span>"</span>,
|
||||
<a href="c-chrono-asctime.html"><span class="kw514">asctime</span></a><span class="br0">(</span><a href="c-chrono-gmtime.html"><span class="kw518">gmtime</span></a><span class="br0">(</span><span class="sy3">&</span>result<span class="br0">)</span><span class="br0">)</span>, <span class="br0">(</span><a href="c-types-integer.html"><span class="kw118">intmax_t</span></a><span class="br0">)</span>result<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>可能的输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">The current time is Fri Apr 24 15:05:25 2015
|
||||
(1429887925 seconds since the Epoch)</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.27.2.4 The time function (p: 391)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.23.2.4 The time function (p: 341)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.12.2.4 The time function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-localtime.html"><span class="t-lines"><span>localtime</span><span>localtime_r</span><span>localtime_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c23">(C23)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将从纪元开始的时间转换成以本地时间表示的日历时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-gmtime.html"><span class="t-lines"><span>gmtime</span><span>gmtime_r</span><span>gmtime_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c23">(C23)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将从纪元开始的时间转换成以协调世界时(UTC)表示的日历时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-timespec_get.html"><span class="t-lines"><span>timespec_get</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>返回基于给定时间基底的日历时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,142 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>time_t</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_chrono_time_t skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">time_t</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-chrono.html">chrono</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><time.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><span class="kw1">typedef</span> <span class="coMULTI">/* unspecified */</span> time_t<span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>足以表示时间的<span class="t-rev-inl t-until-c11"><span>算术</span> <span><span class="t-mark-rev t-until-c11">(C11 前)</span></span></span><span class="t-rev-inl t-since-c11"><span>实数</span> <span><span class="t-mark-rev t-since-c11">(C11 起)</span></span></span>类型。</p>
|
||||
<p>尽管 C 标准没有定义,它几乎总是一个保有从 UTC 1970 年 1 月 1 日 00:00 开始秒数的整数值(不计闰秒),对应 <a href="https://en.wikipedia.org/wiki/Unix_time" class="extiw" title="enwiki:Unix time">POSIX 时间</a>。</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h3>
|
||||
<p>标准在提及 <span class="t-lc"><strong class="selflink">time_t</strong></span> 类型值时使用用语<i>日历时间</i>。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<p>显示纪元起点。</p>
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdint.h></span>
|
||||
<span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <time.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
time_t epoch <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"%jd seconds since the epoch began<span class="es1">\n</span>"</span>, <span class="br0">(</span><a href="c-types-integer.html"><span class="kw118">intmax_t</span></a><span class="br0">)</span>epoch<span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"%s"</span>, <a href="c-chrono-asctime.html"><span class="kw515">asctime</span></a><span class="br0">(</span><a href="c-chrono-gmtime.html"><span class="kw519">gmtime</span></a><span class="br0">(</span><span class="sy3">&</span>epoch<span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>可能的输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">0 seconds since the epoch began
|
||||
Thu Jan 1 00:00:00 1970</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.27.1/3 Components of time (p: 388)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.23.1/3 Components of time (p: 338)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.12.1 Components of time</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-time.html"><span class="t-lines"><span>time</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>返回纪元开始经过的当前系统日历时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-localtime.html"><span class="t-lines"><span>localtime</span><span>localtime_r</span><span>localtime_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c23">(C23)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将从纪元开始的时间转换成以本地时间表示的日历时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-gmtime.html"><span class="t-lines"><span>gmtime</span><span>gmtime_r</span><span>gmtime_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c23">(C23)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将从纪元开始的时间转换成以协调世界时(UTC)表示的日历时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,92 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>timespec</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_chrono_timespec skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">timespec</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-chrono.html">chrono</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><time.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw1">struct</span> timespec<span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>保有时间间隔的结构体,将其拆分成秒数和纳秒数。</p>
|
||||
<h3><span class="mw-headline" id=".E6.88.90.E5.91.98.E5.AF.B9.E8.B1.A1">成员对象</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td><span class="t-dsc-small">time_t</span> tv_sec</td>
|
||||
<td>整秒数(合法值 >= 0)</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><span class="t-dsc-small">long</span> tv_nsec</td>
|
||||
<td>纳秒数(合法值为 [0, 999999999] )</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.27.1/3 Components of time (p: 388)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-timespec_get.html"><span class="t-lines"><span>timespec_get</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>返回基于给定时间基底的日历时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-tm.html"><span class="t-lines"><span>tm</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>日历时间类型<br />
|
||||
<span class="t-mark">(结构体)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,157 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>timespec_get</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_chrono_timespec_get skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">timespec_get</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-chrono.html">chrono</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><time.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> timespec_get<span class="br0">(</span> <span class="kw1">struct</span> timespec <span class="sy2">*</span>ts, <span class="kw4">int</span> base <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(1)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="co2">#define TIME_UTC /* implementation-defined */</span></span></div>
|
||||
</td>
|
||||
<td>(2)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 修改 <code>ts</code> 所指向的 <span class="t-lc">struct timespec</span> 对象,以保有以时间基底 <code>base</code> 表示的当前日历时间。</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 展开成适用作 <code>timespec_get</code> 的 <code>base</code> 参数的值。</div>
|
||||
<p>实现可以提供其他以 <code>TIME_</code> 为首的宏常量,以指示时间基底。</p>
|
||||
<p>若 <code>base</code> 等于 <code>TIME_UTC</code> ,则</p>
|
||||
<ul>
|
||||
<li>设 <span class="t-c"><span class="mw-geshi c source-c">ts<span class="sy2">-</span><span class="sy1">></span>tv_sec</span></span> 为实现定义的纪元后的秒数,截断到整数值。</li>
|
||||
<li>设 <span class="t-c"><span class="mw-geshi c source-c">ts<span class="sy2">-</span><span class="sy1">></span>tv_nsec</span></span> 成员为纳秒数的整数值,按照系统时钟的解析度舍入。</li>
|
||||
</ul>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>ts</td>
|
||||
<td>-</td>
|
||||
<td>指向 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw1">struct</span> timespec</span></span> 类型对象的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>base</td>
|
||||
<td>-</td>
|
||||
<td><code>TIME_UTC</code> 或其他任何指示时间基底的非零整数值</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>成功是返回<code>base</code>的值,否则返回零。</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">注解</span></h3>
|
||||
<p>POSIX 函数 <a rel="nofollow" class="external text" href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/clock_getres.html"><code>clock_gettime(CLOCK_REALTIME, ts)</code></a> 亦可用于将从纪元开始的时间传达给 <code>struct timespec</code> 。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <time.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw1">struct</span> timespec ts<span class="sy4">;</span>
|
||||
timespec_get<span class="br0">(</span><span class="sy3">&</span>ts, TIME_UTC<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw4">char</span> buff<span class="br0">[</span><span class="nu0">100</span><span class="br0">]</span><span class="sy4">;</span>
|
||||
<a href="c-chrono-strftime.html"><span class="kw517">strftime</span></a><span class="br0">(</span>buff, <span class="kw4">sizeof</span> buff, <span class="st0">"%D %T"</span>, <a href="c-chrono-gmtime.html"><span class="kw519">gmtime</span></a><span class="br0">(</span><span class="sy3">&</span>ts.<span class="me1">tv_sec</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"Current time: %s.%09ld UTC<span class="es1">\n</span>"</span>, buff, ts.<span class="me1">tv_nsec</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">Current time: 02/18/15 14:34:03.048508855 UTC</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-17">
|
||||
<ul>
|
||||
<li>C17 标准(ISO/IEC 9899:2018):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.27.2.5 The timespec_get function (p: 286)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.27.2.5 The timespec_get function (p: 390)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-timespec.html"><span class="t-lines"><span>timespec</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>单位为秒和纳秒的时间<br />
|
||||
<span class="t-mark">(结构体)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-timespec_getres.html"><span class="t-lines"><span>timespec_getres</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c23">(C23)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>返回基于给定时间基底的日历时间的解析度<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-time.html"><span class="t-lines"><span>time</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>返回纪元开始经过的当前系统日历时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,123 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>timespec_getres</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_chrono_timespec_getres skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">timespec_getres</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-chrono.html">chrono</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><time.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c23">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> timespec_getres<span class="br0">(</span> <span class="kw1">struct</span> timespec <span class="sy2">*</span>ts, <span class="kw4">int</span> base <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c23">(C23 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>若 <code>ts</code> 为非空且 <span class="t-lc">timespec_get</span> 支持 <code>base</code> ,则修改 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">*</span>ts</span></span> 以保有 <span class="t-lc">timespec_get</span> 对 <code>base</code> 提供的时间的解析度。对每个支持的 <code>base</code> ,同一次程序执行期间多次调用 <code>timespec_getres</code> 拥有等同的结果。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>ts</td>
|
||||
<td>-</td>
|
||||
<td>指向 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw1">struct</span> timespec</span></span> 类型对象的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>base</td>
|
||||
<td>-</td>
|
||||
<td><span class="t-lc">TIME_UTC</span> 或另一指示时间基底的非零值</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>若支持 <code>base</code> 则为 <code>base</code> 的值,否则为零。</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">注解</span></h3>
|
||||
<p>POSIX 函数 <a rel="nofollow" class="external text" href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/clock_getres.html"><code>clock_getres(clock_id, ts)</code></a> 亦可用于以 <code>clock_id</code> 所标识的时间的解析度填充 <span class="t-lc">timespec</span> 。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <time.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw4">char</span> buff<span class="br0">[</span><span class="nu0">128</span><span class="br0">]</span><span class="sy4">;</span>
|
||||
<span class="kw1">struct</span> timespec ts<span class="sy4">;</span>
|
||||
<span class="kw4">const</span> <span class="kw4">int</span> res <span class="sy1">=</span> timespec_getres<span class="br0">(</span><span class="sy3">&</span>ts, TIME_UTC<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">if</span> <span class="br0">(</span>res <span class="sy1">==</span> TIME_UTC<span class="br0">)</span> <span class="br0">{</span>
|
||||
<span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw523">tm</span></a> timer<span class="sy4">;</span>
|
||||
<a href="c-chrono-strftime.html"><span class="kw517">strftime</span></a><span class="br0">(</span>buff, <span class="kw4">sizeof</span> buff, <span class="st0">"%D %T"</span>, gmtime_r<span class="br0">(</span><span class="sy3">&</span>ts.<span class="me1">tv_sec</span>, <span class="sy3">&</span>timer<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"Time resolution info: %s.%09ld UTC<span class="es1">\n</span>"</span>, buff, ts.<span class="me1">tv_nsec</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"TIME_UTC base is not supported."</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>可能的输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">Time resolution info: 01/01/70 00:00:00.000000001 UTC</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-timespec.html"><span class="t-lines"><span>timespec</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>单位为秒和纳秒的时间<br />
|
||||
<span class="t-mark">(结构体)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-timespec_get.html"><span class="t-lines"><span>timespec_get</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>返回基于给定时间基底的日历时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-time.html"><span class="t-lines"><span>time</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>返回纪元开始经过的当前系统日历时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,184 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>tm</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_chrono_tm skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">tm</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-chrono.html">chrono</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><time.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><span class="kw1">struct</span> tm<span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>保有拆分成其组分的日历日期和时间的结构体。</p>
|
||||
<h3><span class="mw-headline" id=".E6.88.90.E5.91.98.E5.AF.B9.E8.B1.A1">成员对象</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td><span class="t-dsc-small">int</span> tm_sec</td>
|
||||
<td>分后之秒 – <span class="t-rev-inl t-until-c99"><span>[0, 61]</span> <span><span class="t-mark-rev t-until-c99">(C99 前)</span></span></span><span class="t-rev-inl t-since-c99"><span>[0, 60]</span> <span><span class="t-mark-rev t-since-c99">(C99 起)</span></span></span><sup id="cite_ref-leapsecond_1-0" class="reference"><a href="c-chrono-tm.html#cite_note-leapsecond-1">[注 1]</a></sup></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><span class="t-dsc-small">int</span> tm_min</td>
|
||||
<td>时后之分 – [0, 59]</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><span class="t-dsc-small">int</span> tm_hour</td>
|
||||
<td>自午夜起的小时 – [0, 23]</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><span class="t-dsc-small">int</span> tm_mday</td>
|
||||
<td>月之日 – [1, 31]</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><span class="t-dsc-small">int</span> tm_mon</td>
|
||||
<td>自 1 月起的月 – [0, 11]</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><span class="t-dsc-small">int</span> tm_year</td>
|
||||
<td>自 1900 年起的年</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><span class="t-dsc-small">int</span> tm_wday</td>
|
||||
<td>自星期日起的星期 – [0, 6]</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><span class="t-dsc-small">int</span> tm_yday</td>
|
||||
<td>从 1 月 1 日起的日 – [0, 365]</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><span class="t-dsc-small">int</span> tm_isdst</td>
|
||||
<td>夏时令标签。若夏时令有效则此值为正,若无效则为零,若无可用信息则为负。</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h6><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h6>
|
||||
<p>标准只强制前述成员按任一顺序存在。实现通常对此结构体添加额外的数据成员。</p>
|
||||
<ol class="references">
|
||||
<li id="cite_note-leapsecond-1"><span class="mw-cite-backlink"><a href="c-chrono-tm.html#cite_ref-leapsecond_1-0">↑</a></span> <span class="reference-text">范围允许正的闰秒。不允许一分钟有二个闰秒( C89 的范围 0..61 是缺陷)。</span></li>
|
||||
</ol>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<p>显示日历时间的起点。</p>
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <time.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw1">struct</span> tm start <span class="sy1">=</span> <span class="br0">{</span>.<span class="me1">tm_mday</span><span class="sy1">=</span><span class="nu0">1</span><span class="br0">}</span><span class="sy4">;</span>
|
||||
<a href="c-chrono-mktime.html"><span class="kw521">mktime</span></a><span class="br0">(</span><span class="sy3">&</span>start<span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"%s<span class="es1">\n</span>"</span>, <a href="c-chrono-asctime.html"><span class="kw515">asctime</span></a><span class="br0">(</span><span class="sy3">&</span>start<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>可能的输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">Mon Jan 1 00:00:00 1900</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-17">
|
||||
<ul>
|
||||
<li>C17 标准(ISO/IEC 9899:2018):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.27.1/3 Components of time (p: 284)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.27.1/3 Components of time (p: 388)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.23.1/3 Components of time (p: 338)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.12.1 Components of time</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-localtime.html"><span class="t-lines"><span>localtime</span><span>localtime_r</span><span>localtime_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c23">(C23)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将从纪元开始的时间转换成以本地时间表示的日历时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-gmtime.html"><span class="t-lines"><span>gmtime</span><span>gmtime_r</span><span>gmtime_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c23">(C23)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将从纪元开始的时间转换成以协调世界时(UTC)表示的日历时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,528 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>wcsftime</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_chrono_wcsftime skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">wcsftime</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-chrono.html">chrono</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><wchar.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><a href="c-types-size_t.html"><span class="kw100">size_t</span></a> wcsftime<span class="br0">(</span> <span class="kw4">wchar_t</span><span class="sy2">*</span> str, <a href="c-types-size_t.html"><span class="kw100">size_t</span></a> count, <span class="kw4">const</span> <span class="kw4">wchar_t</span><span class="sy2">*</span> format, <a href="c-chrono-tm.html"><span class="kw522">tm</span></a><span class="sy2">*</span> <a href="c-chrono-time.html"><span class="kw513">time</span></a> <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c95">(C95 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>将来自给定的日历时间 <code>time</code> 的日期和时间信息,按照格式字符串 <code>format</code> ,转换成空终止宽字符串 <code>str</code> 。最多写入 <code>count</code> 个宽字符。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>str</td>
|
||||
<td>-</td>
|
||||
<td>指向待输出的 <code>wchar_t</code> 数组首元素的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>count</td>
|
||||
<td>-</td>
|
||||
<td>最大写入宽字符数</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>format</td>
|
||||
<td>-</td>
|
||||
<td>指向指定转换格式的空终止宽字符串指针。
|
||||
<p>格式字符串由零或更多个说明符和通常字符(除 <code>%</code> )构成。所有通常字符,包括空终止字符,都会被复制到输出字符串而不加修改。每个转换说明符都始于 <code>%</code> 字符,可选地跟随 <code>E</code> 或 <code>O</code> 修饰符(若本地环境不支持则忽略),后随决定修饰符行为的字符。下列修饰符格式可用:</p>
|
||||
<table class="wikitable" style="font-size:85%; max-width:90em;">
|
||||
<tr>
|
||||
<th>转换<br />
|
||||
说明符</th>
|
||||
<th>解释</th>
|
||||
<th>使用的域</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>%</code></th>
|
||||
<td>写字面的 <code>%</code> 。完整转换说明必须是 <code>%%</code> 。</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>n</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>写换行符</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>t</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>写水平制表符</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="3">年</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Y</code></th>
|
||||
<td>以 4 位十进制数写<b>年</b>。</td>
|
||||
<td><code><b>tm_year</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>EY</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用方式写<b>年</b>。例如在 ja_JP 本地环境中,以“平成23年”取代“2011年”。</td>
|
||||
<td><code><b>tm_year</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>y</code></th>
|
||||
<td>写<b>年</b>的末 2 位十进制数(范围<code>[00,99]</code>)。</td>
|
||||
<td><code><b>tm_year</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Oy</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用数字系统写<b>年</b>的末 2 位数字。例如在 ja_JP 本地环境中以“十一”取代“11”。</td>
|
||||
<td><code><b>tm_year</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Ey</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>将<b>年</b>写作从本地环境的替用时期 <code>%EC</code> 的偏移(本地环境依赖)。</td>
|
||||
<td><code><b>tm_year</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>C</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>写<b>年</b>的首 2 位十进制数(范围 <code>[00,99]</code> )。</td>
|
||||
<td><code><b>tm_year</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>EC</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以本地环境的替用表示写<b>年份基底(时期)</b>,例如 ja_JP 中的“平成”。</td>
|
||||
<td><code><b>tm_year</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>G</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>写<b>基于 ISO 8601 的年</b>,即是包含指定星期的年份。
|
||||
<p>IS0 8601 中星期以星期一开始,而且一年的首星期必须满足下列要求:</p>
|
||||
<ul>
|
||||
<li>包含 1 月 4 日</li>
|
||||
<li>包含一年的首个星期四</li>
|
||||
</ul>
|
||||
</td>
|
||||
<td><code><b>tm_year</b></code>, <code><b>tm_wday</b></code>, <code><b>tm_yday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>g</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>写<b>基于 ISO 8601 的年</b>,即是包含指定星期年份,的后 2 位数(范围 <code>[00,99]</code> )。
|
||||
<p>IS0 8601 中星期以星期一开始,而且一年的首星期必须满足下列要求:</p>
|
||||
<ul>
|
||||
<li>包含 1 月 4 日</li>
|
||||
<li>包含一年的首个星期四</li>
|
||||
</ul>
|
||||
</td>
|
||||
<td><code><b>tm_year</b></code>, <code><b>tm_wday</b></code>, <code><b>tm_yday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="3">月</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>b</code></th>
|
||||
<td>写<b>缩略月</b>名,例如 <code>Oct</code> (本地环境依赖)。</td>
|
||||
<td><code><b>tm_mon</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Ob</code><br />
|
||||
<span class="t-mark-rev t-since-c23">(C23)</span></th>
|
||||
<td>以本地环境的替用表示写<b>缩写月</b>名</td>
|
||||
<td><code><b>tm_mon</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>h</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>与 <code>b</code> 同意。</td>
|
||||
<td><code><b>tm_mon</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>B</code></th>
|
||||
<td>写<b>完整月</b>名,例如 <code>October</code> (本地环境依赖)。</td>
|
||||
<td><code><b>tm_mon</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>OB</code><br />
|
||||
<span class="t-mark-rev t-since-c23">(C23)</span></th>
|
||||
<td>以本地环境的替用表示写适合的<b>完整月</b>名</td>
|
||||
<td><code><b>tm_mon</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>m</code></th>
|
||||
<td>将<b>月</b>写作十进制数(范围 <code>[01,12]</code> )。</td>
|
||||
<td><code><b>tm_mon</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Om</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用数字系统写<b>月</b>。例如 ja_JP 本地环境中“十二”取代“12”。</td>
|
||||
<td><code><b>tm_mon</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="3">星期</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>U</code></th>
|
||||
<td>以十进制数写<b>年的星期</b>(星期日是星期的首日)(范围 <code>[00,53]</code> )。</td>
|
||||
<td><code><b>tm_year</b></code>, <code><b>tm_wday</b></code>, <code><b>tm_yday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>OU</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用数值系统写如同用 <code>%U</code> 的<b>年的星期</b>。例如“五十二”在 ja_JP 本地环境中取代“52”。</td>
|
||||
<td><code><b>tm_year</b></code>, <code><b>tm_wday</b></code>, <code><b>tm_yday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>W</code></th>
|
||||
<td>以十进制数写<b>年的星期</b>(星期一是星期的首日)(范围 <code>[00,53]</code> )。</td>
|
||||
<td><code><b>tm_year</b></code>, <code><b>tm_wday</b></code>, <code><b>tm_yday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>OW</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用数值系统写如同用 <code>%W</code> 的<b>年的第星期</b>。例如“五十二”在 ja_JP 本地环境中取代“52”。</td>
|
||||
<td><code><b>tm_year</b></code>, <code><b>tm_wday</b></code>, <code><b>tm_yday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>V</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>写 <b>ISO 8601 的年的星期</b>(范围<code>[00,53]</code>)。
|
||||
<p>IS0 8601 中星期以星期一开始,而且一年的首星期必须满足下列要求:</p>
|
||||
<ul>
|
||||
<li>包含 1 月 4 日</li>
|
||||
<li>包含一年的首个星期四</li>
|
||||
</ul>
|
||||
</td>
|
||||
<td><code><b>tm_year</b></code>, <code><b>tm_wday</b></code>, <code><b>tm_yday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>OV</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用数值系统写如同用 <code>%V</code> 的<b>年的星期</b>。例如“五十二”在 ja_JP 本地环境中取代“52”。</td>
|
||||
<td><code><b>tm_year</b></code>, <code><b>tm_wday</b></code>, <code><b>tm_yday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="3">年/月之日</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>j</code></th>
|
||||
<td>以十进制数写<b>年的第几日</b>(范围 <code>[001,366]</code> )。</td>
|
||||
<td><code><b>tm_yday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>d</code></th>
|
||||
<td>以十进制数写<b>月的第几日</b>(范围 <code>[01,31]</code> )。</td>
|
||||
<td><code><b>tm_mday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Od</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用数字系统写零基的<b>月的第几日</b>。例如 ja_JP 本地环境中“二十七”取代“ 27 ”。
|
||||
<p>单字符前加空格。</p>
|
||||
</td>
|
||||
<td><code><b>tm_mday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>e</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以十进制数写<b>月的第几日</b>(范围<code>[01,31]</code>)。
|
||||
<p>单数字前加空格。</p>
|
||||
</td>
|
||||
<td><code><b>tm_mday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Oe</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用数字系统写一基的<b>月的第几日</b>。例如 ja_JP 本地环境中“二十七”取代“27”。
|
||||
<p>单字符前加空格。</p>
|
||||
</td>
|
||||
<td><code><b>tm_mday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="3">星期之日</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>a</code></th>
|
||||
<td>写<b>缩略的星期日期</b>名,例如 <code>Fri</code> (本地环境依赖)。</td>
|
||||
<td><code><b>tm_wday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>A</code></th>
|
||||
<td>写<b>完整的星期日期</b>名,例如 <code>Friday</code> (本地环境依赖)。</td>
|
||||
<td><code><b>tm_wday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>w</code></th>
|
||||
<td>以十进制数写<b>星期日期</b>,其中星期日是 <code>0</code> (范围 <code>[0-6]</code> )。</td>
|
||||
<td><code><b>tm_wday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Ow</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>用替用数字系统写<b>星期日期</b>,其中星期日是 <code>0</code> 。例如 ja_JP 本地环境中“二”取代“2”。</td>
|
||||
<td><code><b>tm_wday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>u</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>十进制数写<b>星期日期</b>,其中星期一是 <code>1</code> ( ISO 8601 格式)(范围 <code>[1-7]</code> )。</td>
|
||||
<td><code><b>tm_wday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Ou</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>用替用数字系统写<b>星期日期</b>,其中星期一是 <code>1</code> 。例如 ja_JP 本地环境中“二”取代“2”。</td>
|
||||
<td><code><b>tm_wday</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="3">时、分、秒</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>H</code></th>
|
||||
<td>以十进制数写<b>时</b>, 24 小时制(范围 <code>[00-23]</code> )。</td>
|
||||
<td><code><b>tm_hour</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>OH</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用数字系统写 24 小时制的<b>时</b>。例如 ja_JP 本地环境中“十八”取代“18”。</td>
|
||||
<td><code><b>tm_hour</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>I</code></th>
|
||||
<td>以十进制数写<b>时</b>, 12 小时制(范围 <code>[01,12]</code> )。</td>
|
||||
<td><code><b>tm_hour</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>OI</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用数字系统写 12 小时制的<b>时</b>。例如 ja_JP 本地环境中“六”取代“6”。</td>
|
||||
<td><code><b>tm_hour</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>M</code></th>
|
||||
<td>以十进制数写<b>分</b>(范围 <code>[00,59]</code> )。</td>
|
||||
<td><code><b>tm_min</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>OM</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用数字系统写<b>分</b>。例如 ja_JP 本地环境中“二十五”取代“25”。</td>
|
||||
<td><code><b>tm_min</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>S</code></th>
|
||||
<td>以十进制数写<b>秒</b>(范围 <code>[00,60]</code> )。</td>
|
||||
<td><code><b>tm_sec</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>OS</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以替用数字系统写<b>秒</b>。例如 ja_JP 本地环境中“二十四”取代“24”。</td>
|
||||
<td><code><b>tm_sec</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="3">其他</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>c</code></th>
|
||||
<td>写<b>标准日期时间字符串</b>。例如 <code>Sun Oct 17 04:41:13 2010</code> (本地环境依赖)。</td>
|
||||
<td>全部</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Ec</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>写<b>替用日期时间字符串</b>。例如 ja_JP 本地环境中“平成23年”取代“2011年”。</td>
|
||||
<td>全部</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>x</code></th>
|
||||
<td>写本地化的<b>日期表示</b>(本地环境依赖)。</td>
|
||||
<td>全部</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Ex</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>写<b>替用日期表示</b>。例如 ja_JP 本地环境中“平成23年”取代“2011年”。</td>
|
||||
<td>全部</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>X</code></th>
|
||||
<td>写本地化的<b>时间表示</b>,例如 18:40:20 或 6:40:20 PM (本地环境依赖)。</td>
|
||||
<td>全部</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>EX</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>写<b>替用时间表示</b>(本地环境依赖)。</td>
|
||||
<td>全部</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>D</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>等价于<b>"%m/%d/%y"</b>。</td>
|
||||
<td><code><b>tm_mon</b></code>, <code><b>tm_mday</b></code>, <code><b>tm_year</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>F</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>等价于<b>"%Y-%m-%d"</b>( ISO 8601 日期格式)。</td>
|
||||
<td><code><b>tm_mon</b></code>, <code><b>tm_mday</b></code>, <code><b>tm_year</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>r</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>写本地化的 <b>12 小时制</b>时间(本地环境依赖)。</td>
|
||||
<td><code><b>tm_hour</b></code>, <code><b>tm_min</b></code>, <code><b>tm_sec</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>R</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>等价于<b>"%H:%M"</b>。</td>
|
||||
<td><code><b>tm_hour</b></code>, <code><b>tm_min</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>T</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>等价于<b>"%H:%M:%S"</b>( ISO 8601 时间格式)。</td>
|
||||
<td><code><b>tm_hour</b></code>, <code><b>tm_min</b></code>, <code><b>tm_sec</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>p</code></th>
|
||||
<td>写本地化的 <b>a.m.</b> 或 <b>p.m.</b> (本地环境依赖)。</td>
|
||||
<td><code><b>tm_hour</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>z</code><br />
|
||||
<span class="t-mark-rev t-since-c99">(C99)</span></th>
|
||||
<td>以 ISO 8601 格式(例如 <code>-0430</code> )写<b>距 UTC 的偏移</b>,或者倘若时区信息不可用则不写字符。</td>
|
||||
<td><code><b>tm_isdst</b></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>Z</code></th>
|
||||
<td>写依赖本地环境的<b>时区名或缩写</b>,或者若时区信息不可用则不写字符。</td>
|
||||
<td><code><b>tm_isdst</b></code></td>
|
||||
</tr>
|
||||
</table>
|
||||
<p><br /></p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>成功时,返回写入 <code>str</code> 所指向的宽字符数组的字符数,不包含终止 <span class="t-c"><span class="mw-geshi c source-c">L<span class="st0">'<span class="es5">\0</span>'</span></span></span> 。若在能存储整个字符串前抵达 <code>count</code> ,则返回 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> ,写入内容是未定义的。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <time.h></span>
|
||||
<span class="co2">#include <wchar.h></span>
|
||||
<span class="co2">#include <locale.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw4">wchar_t</span> buff<span class="br0">[</span><span class="nu0">40</span><span class="br0">]</span><span class="sy4">;</span>
|
||||
<span class="kw1">struct</span> <a href="c-chrono-tm.html"><span class="kw522">tm</span></a> my_time <span class="sy1">=</span> <span class="br0">{</span> .<span class="me1">tm_year</span><span class="sy1">=</span><span class="nu0">112</span>, <span class="co1">// = 2012 年</span>
|
||||
.<span class="me1">tm_mon</span><span class="sy1">=</span><span class="nu0">9</span>, <span class="co1">// = 10 月</span>
|
||||
.<span class="me1">tm_mday</span><span class="sy1">=</span><span class="nu0">9</span>, <span class="co1">// = 9 日</span>
|
||||
.<span class="me1">tm_hour</span><span class="sy1">=</span><span class="nu0">8</span>, <span class="co1">// = 8 时</span>
|
||||
.<span class="me1">tm_min</span><span class="sy1">=</span><span class="nu0">10</span>, <span class="co1">// = 10 分</span>
|
||||
.<span class="me1">tm_sec</span><span class="sy1">=</span><span class="nu0">20</span> <span class="co1">// = 20 秒</span>
|
||||
<span class="br0">}</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw1">if</span> <span class="br0">(</span>wcsftime<span class="br0">(</span>buff, <span class="kw4">sizeof</span> buff, L<span class="st0">"%A %c"</span>, <span class="sy3">&</span>my_time<span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"%ls<span class="es1">\n</span>"</span>, buff<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span>
|
||||
<a href="c-io-puts.html"><span class="kw835">puts</span></a><span class="br0">(</span><span class="st0">"wcsftime failed"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
|
||||
<a href="c-locale-setlocale.html"><span class="kw900">setlocale</span></a><span class="br0">(</span><a href="c-locale-LC_categories.html"><span class="kw903">LC_ALL</span></a>, <span class="st0">"ja_JP.utf8"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw1">if</span> <span class="br0">(</span>wcsftime<span class="br0">(</span>buff, <span class="kw4">sizeof</span> buff, L<span class="st0">"%A %c"</span>, <span class="sy3">&</span>my_time<span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"%ls<span class="es1">\n</span>"</span>, buff<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span>
|
||||
<a href="c-io-puts.html"><span class="kw835">puts</span></a><span class="br0">(</span><span class="st0">"wcsftime failed"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">Sunday Sun Oct 9 08:10:20 2012
|
||||
日曜日 2012年10月09日 08時10分20秒</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.29.5.1 The wcsftime function (p: 439-440)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.24.5.1 The wcsftime function (p: 385-386)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-strftime.html"><span class="t-lines"><span>strftime</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将 <code>struct tm</code> 对象转换成自定义文本表示<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,318 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>日期和时间工具</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_chrono skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">日期和时间工具</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<h3><span class="mw-headline" id=".E5.87.BD.E6.95.B0">函数</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<h5><span class="mw-headline" id=".E6.97.B6.E9.97.B4.E6.93.8D.E7.BA.B5">时间操纵</span></h5>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><time.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-difftime.html"><span class="t-lines"><span>difftime</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算时间差<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-time.html"><span class="t-lines"><span>time</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>返回纪元开始经过的当前系统日历时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-clock.html"><span class="t-lines"><span>clock</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>返回未加工的程序启动时开始经过的处理器时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-timespec_get.html"><span class="t-lines"><span>timespec_get</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>返回基于给定时间基底的日历时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-timespec_getres.html"><span class="t-lines"><span>timespec_getres</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c23">(C23)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>返回基于给定时间基底的日历时间的解析度<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<h5><span class="mw-headline" id=".E6.A0.BC.E5.BC.8F.E8.BD.AC.E6.8D.A2">格式转换</span></h5>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><time.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-asctime.html"><span class="t-lines"><span>asctime</span><span>asctime_r</span><span>asctime_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c23">(C23)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将 <code>struct tm</code> 对象转换成文本表示<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-ctime.html"><span class="t-lines"><span>ctime</span><span>ctime_r</span><span>ctime_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c23">(C23)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将 <code>struct time_t</code> 对象转换成文本表示<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-strftime.html"><span class="t-lines"><span>strftime</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将 <code>struct tm</code> 对象转换成自定义文本表示<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><wchar.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-wcsftime.html"><span class="t-lines"><span>wcsftime</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c95">(C95)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将 <code>struct tm</code> 对象转换成自定义宽字符文本表示<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><time.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-gmtime.html"><span class="t-lines"><span>gmtime</span><span>gmtime_r</span><span>gmtime_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c23">(C23)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将从纪元开始的时间转换成以协调世界时(UTC)表示的日历时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-localtime.html"><span class="t-lines"><span>localtime</span><span>localtime_r</span><span>localtime_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c23">(C23)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将从纪元开始的时间转换成以本地时间表示的日历时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-mktime.html"><span class="t-lines"><span>mktime</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将日历时间转换成纪元开始经过的时间<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E5.B8.B8.E9.87.8F">常量</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><time.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-CLOCKS_PER_SEC.html"><span class="t-lines"><span>CLOCKS_PER_SEC</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>处理器每秒的时间计数<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E7.B1.BB.E5.9E.8B">类型</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><time.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-tm.html"><span class="t-lines"><span>tm</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>日历时间类型<br />
|
||||
<span class="t-mark">(结构体)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-time_t.html"><span class="t-lines"><span>time_t</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从纪元开始的日历时间类型<br />
|
||||
<span class="t-mark">(typedef)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-clock_t.html"><span class="t-lines"><span>clock_t</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从时点开始的处理器时间类型<br />
|
||||
<span class="t-mark">(typedef)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-chrono-timespec.html"><span class="t-lines"><span>timespec</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>单位为秒和纳秒的时间<br />
|
||||
<span class="t-mark">(结构体)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-17">
|
||||
<ul>
|
||||
<li>C17 标准(ISO/IEC 9899:2018):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.27 Date and time <time.h> (p: 284-291)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.29.5.1 The wcsftime function (p: 320-321)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.31.14 Date and time <time.h> (p: 333)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.27 Date and time <time.h> (p: 388-397)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.29.5.1 The wcsftime function (p: 439-440)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.31.14 Date and time <time.h> (p: 456)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.23 Date and time <time.h> (p: 338-347)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.24.5.1 The wcsftime function (p: 385-386)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.12 DATE AND TIME <time.h></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin"></table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,186 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>注释</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_comment skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">注释</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<p>注释的作用是一套代码内文档。插入注释到程序中时,编译器直接忽略它们;它们只是有意地被人类用作读取源码的笔记。</p>
|
||||
<h3><span class="mw-headline" id=".E8.AF.AD.E6.B3.95">语法</span></h3>
|
||||
<table class="t-sdsc-begin">
|
||||
<tr>
|
||||
<td colspan="10" class="t-sdsc-sep"></td>
|
||||
</tr>
|
||||
<tr class="t-sdsc">
|
||||
<td><code><b>/*</b></code> <span class="t-spar">注释</span> <code><b>*/</b></code></td>
|
||||
<td>(1)</td>
|
||||
<td class="t-sdsc-nopad"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="10" class="t-sdsc-sep"></td>
|
||||
</tr>
|
||||
<tr class="t-sdsc">
|
||||
<td><code><b>//</b></code> <span class="t-spar">注释</span>\n</td>
|
||||
<td>(2)</td>
|
||||
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="10" class="t-sdsc-sep"></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 通称为“ C 风格”或“多行”注释。</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 通称为“ C++ 风格”或“单行”注释。</div>
|
||||
<p>在<a href="c-language-translation_phases.html">翻译阶段 3</a>,通过把每段注释替换为单个空白字符,将所有注释从程序中移除。</p>
|
||||
<h3><span class="mw-headline" id="C_.E9.A3.8E.E6.A0.BC">C 风格</span></h3>
|
||||
<p>C 风格注释通常用于注释大块文本或小片代码;然而,能用它们注释单行。可以简单地以 <code>/*</code> 和 <code>*/</code> 环绕文本,将文本作为 C 风格注释插入。 C 风格注释告诉编译器忽略 <code>/*</code> 和 <code>*/</code> 间的所有内容。尽管不是 C 标准的一部分, <code>/**</code> 和 <code>*/</code> 常用于指示文档块;这是合法的,因为星号被简单地当做注释的一部分。</p>
|
||||
<p>除了在<a href="c-language-character_constant.html">字符常量</a>、<a href="c-language-string_literal.html">字符串字面量</a>或注释中,字符 <code>/*</code> 引入一段注释。检验这种注释的内容仅是为了鉴别多字节字符,以及寻找终止注释的 <code>*/</code> 。 C 风格注释不能嵌套。</p>
|
||||
<table class="t-rev-begin">
|
||||
<tr class="t-rev t-since-c99">
|
||||
<td>
|
||||
<h3><span class="mw-headline" id="C.2B.2B_.E9.A3.8E.E6.A0.BC">C++ 风格</span></h3>
|
||||
<p>C++ 风格注释通常用于注释单行文本或代码;然而,能将它们放在一起组成多行注释。可以简单地将 <code>//</code> 置于文本前,文本后跟随换行符,以将文本作为 C++ 风格注释插入。 C++ 风格注释告诉编译器忽略 <code>//</code> 和换行符间的所有内容。</p>
|
||||
<p>除了在<a href="c-language-character_constant.html">字符常量</a>、<a href="c-language-string_literal.html">字符串字面量</a>或注释中,字符 <code>//</code> 引入一段注释,它包含所有多字节字符,直至但不包含下个换行符。检验这种注释的内容仅是为了鉴别多字节字符,以及寻找终止注释的换行符。 C++ 风格注释能嵌套:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co1">// y = f(x); // 调用算法</span></pre></div>
|
||||
</div>
|
||||
<p>C 风格注释可出现在 C++ 风格注释内:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co1">// y = f(x); /* 调用算法 */</span></pre></div>
|
||||
</div>
|
||||
<p>C++ 风格注释可出现在 C 风格注释内;这是排除一小块源代码的机制:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="coMULTI">/*
|
||||
y = f(x); // 调用算法
|
||||
z = g(x);
|
||||
*/</span></pre></div>
|
||||
</div>
|
||||
<p><br /></p>
|
||||
</td>
|
||||
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h3>
|
||||
<p>因为注释在预处理器阶段前<a href="c-language-translation_phases.html">被移除</a>,宏不能用于组成注释,而不终止的 C 风格注释不会从被 #include 的文件中漏出。</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="coMULTI">/* 试图用宏组成注释。 */</span>
|
||||
<span class="coMULTI">/* 但空格替换字符 "//" 。 */</span>
|
||||
<span class="co2">#ifndef DEBUG</span>
|
||||
<span class="co2">#define PRINTF //</span>
|
||||
<span class="co2">#else</span>
|
||||
<span class="co2">#define PRINTF printf</span>
|
||||
<span class="co2">#endif</span>
|
||||
...
|
||||
<span class="me1">PRINTF</span><span class="br0">(</span><span class="st0">"Error in file %s at line %i<span class="es1">\n</span>"</span>, __FILE__, __LINE__<span class="br0">)</span><span class="sy4">;</span></pre></div>
|
||||
</div>
|
||||
<p>除了注释掉,用于排除源码的其他机制是:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#if 0</span>
|
||||
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">"this will not be compiled"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="coMULTI">/* 与 C 风格注释不冲突 */</span>
|
||||
<span class="co1">// 与 C++ 风格注释不冲突</span>
|
||||
<span class="co2">#endif</span></pre></div>
|
||||
</div>
|
||||
<p>和</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="kw1">if</span><span class="br0">(</span><span class="nu0">0</span><span class="br0">)</span> <span class="br0">{</span>
|
||||
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">"this will be compiled but not be executed"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="coMULTI">/* 与 C 风格注释不冲突 */</span>
|
||||
<span class="co1">// 与 C++ 风格注释不冲突</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>C99 中引入 // 注释,在一些罕有场合是破坏性更改:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1">a <span class="sy1">=</span> b <span class="co1">//*除数:*/ c</span>
|
||||
<span class="sy2">+</span> d<span class="sy4">;</span> <span class="coMULTI">/* C89 编译为 a = b / c + d;
|
||||
C99 编译为 a = b + d; */</span></pre></div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="coMULTI">/*
|
||||
C 风格注释
|
||||
能含有多行。
|
||||
*/</span>
|
||||
|
||||
<span class="coMULTI">/* 或仅一行。 */</span>
|
||||
|
||||
<span class="co1">// C++ 风格注释能注释一行。</span>
|
||||
|
||||
<span class="co1">// 或者,能将</span>
|
||||
<span class="co1">// 它们串在一起。</span>
|
||||
<span class="co2">#include <stdio.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="co1">// 将不运行下方代码</span>
|
||||
<span class="co1">// puts("Hello");</span>
|
||||
|
||||
<span class="co1">// 将运行下方代码</span>
|
||||
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">"Hello"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">return</span> <span class="nu0">0</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>6.4.9 Comments (p: 75)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>6.4.9 Comments (p: 66)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>3.1.9 Comments</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,35 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>当前状况</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_current_status skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">当前状况</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<p><b>最近的里程碑:C17 已经发布,C23 正在进行中</b></p>
|
||||
<p>C17 已经发布,C23 的工作正在进行中。</p>
|
||||
<table class="metadata plainlinks ambox mbox-small-left ambox-notice" style="">
|
||||
<tr>
|
||||
<td class="mbox-empty-cell"></td>
|
||||
<td class="mbox-text" style="">本节未完成<br />
|
||||
原因:重复 C++ 页面中的措辞</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2864.pdf">当前的时间表在文档 N2864 中。</a>.</p>
|
||||
<p>你还可以访问 <a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/documents">open-std.org</a> 以获取最新的 C 标准委员会的文档。通过阅读这些建议,你可以跟踪 C 的发展趋势,并了解一个很酷的想法是如何变成标准的。但是,这些文档<b>不是</b>也<b>不应该被视为</b>标准文档。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin"></table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,150 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>abort_handler_s</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_error_abort_handler_s skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">abort_handler_s</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-error.html">error</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdlib.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">void</span> abort_handler_s<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span> <span class="kw4">restrict</span> msg,<br /></span>
|
||||
<p> <span class="kw4">void</span> <span class="sy2">*</span> <span class="kw4">restrict</span> ptr,<br />
|
||||
errno_t error<br /></p>
|
||||
<span class="br0">)</span><span class="sy4">;</span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>写入必须包含 <code>msg</code> 所指向字符串的实现定义消息到 <span class="t-lc"><a href="c-io.html">stderr</a></span> ,然后调用 <span class="t-lc"><a href="c-program-abort.html">abort()</a></span> 。</p>
|
||||
<p>指向此函数的指针可以传递给 <a href="c-error-set_constraint_handler_s.html">set_constraint_handler_s</a> 以建立运行时制约违规处理。</p>
|
||||
<dl>
|
||||
<dd></dd>
|
||||
<dd>同所有边界检查函数, <code>abort_handler_s</code> 仅若实现定义了 <span class="t-c"><span class="mw-geshi c source-c">__STDC_LIB_EXT1__</span></span> ,且用户在包含 <code><stdlib.h></code> 前定义 <span class="t-c"><span class="mw-geshi c source-c">__STDC_WANT_LIB_EXT1__</span></span> 为整数常量 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> 才保证可用。</dd>
|
||||
</dl>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>msg</td>
|
||||
<td>-</td>
|
||||
<td>指向要写到标准错误输出的消息的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>ptr</td>
|
||||
<td>-</td>
|
||||
<td>指向实现定义的对象的指针或空指针。实现定义对象的例子,是给出检测到违规的函数名和检测到违规时的行号的对象</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>error</td>
|
||||
<td>-</td>
|
||||
<td>errno_t 类型的正值</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>无;此函数不对其调用者返回</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h3>
|
||||
<p>若从未调用 <code>set_constraint_handler_s</code> ,则默认处理函数是实现定义的:可以为 <span class="t-lc">abort_handler_s</span> 、 <span class="t-lc">ignore_handler_s</span> 或另外的实现定义处理函数。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#define __STDC_WANT_LIB_EXT1__ 1</span>
|
||||
<span class="co2">#include <string.h></span>
|
||||
<span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="co2">#ifdef __STDC_LIB_EXT1__</span>
|
||||
<span class="kw4">char</span> dst<span class="br0">[</span><span class="nu0">2</span><span class="br0">]</span><span class="sy4">;</span>
|
||||
set_constraint_handler_s<span class="br0">(</span>ignore_handler_s<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw4">int</span> r <span class="sy1">=</span> strcpy_s<span class="br0">(</span>dst, <span class="kw4">sizeof</span> dst, <span class="st0">"Too long!"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"dst = <span class="es1">\"</span>%s<span class="es1">\"</span>, r = %d<span class="es1">\n</span>"</span>, dst, r<span class="br0">)</span><span class="sy4">;</span>
|
||||
set_constraint_handler_s<span class="br0">(</span>abort_handler_s<span class="br0">)</span><span class="sy4">;</span>
|
||||
r <span class="sy1">=</span> strcpy_s<span class="br0">(</span>dst, <span class="kw4">sizeof</span> dst, <span class="st0">"Too long!"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"dst = <span class="es1">\"</span>%s<span class="es1">\"</span>, r = %d<span class="es1">\n</span>"</span>, dst, r<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="co2">#endif</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>可能的输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">dst = "", r = 22
|
||||
abort_handler_s was called in response to a runtime-constraint violation.
|
||||
|
||||
The runtime-constraint violation was caused by the following expression in strcpy_s:
|
||||
(s1max <= (s2_len=strnlen_s(s2, s1max)) ) (in string_s.c:62)
|
||||
|
||||
Note to end users: This program was terminated as a result
|
||||
of a bug present in the software. Please reach out to your
|
||||
software's vendor to get more help.
|
||||
Aborted</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.6.1.2 The abort_handler_s function (p: 605)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-error-ignore_handler_s.html"><span class="t-lines"><span>ignore_handler_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>边界检查函数的忽略回调<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-error-set_constraint_handler_s.html"><span class="t-lines"><span>set_constraint_handler_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>设置边界检查函数的出错回调<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,160 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>assert</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_error_assert skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">assert</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-error.html">error</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><assert.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><span class="co2">#ifdef NDEBUG</span><br /></span>
|
||||
<p><span class="co2">#define assert(condition) ((void)0)</span><br />
|
||||
<span class="co2">#else</span><br />
|
||||
<span class="co2">#define assert(condition) /*implementation defined*/</span><br /></p>
|
||||
<span class="co2">#endif</span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>宏 <code>assert</code> 的定义依赖于标准库不定义的另一个宏 <span class="t-c"><span class="mw-geshi c source-c">NDEBUG</span></span> 。</p>
|
||||
<p>若 <span class="t-c"><span class="mw-geshi c source-c">NDEBUG</span></span> 在包含了 <code><assert.h></code> 的源代码中的点定义为宏名,则 <code>assert</code> 不做任何事。</p>
|
||||
<p>若不定义 <span class="t-c"><span class="mw-geshi c source-c">NDEBUG</span></span> ,则 <code>assert</code> 将其参数(必须拥有标量类型)与零比较相等。若相等,则 <code>assert</code> 在标准错误输出上输出实现指定的诊断信息,并调用 <span class="t-c"><span class="mw-geshi c source-c"><a href="c-program-abort.html"><span class="kw486">abort</span></a><span class="br0">(</span><span class="br0">)</span></span></span> 。诊断信息要求包含表达式的文本,还有<span class="t-rev-inl t-since-c99"><span><a href="c-language-function_definition.html">预定义变量</a> <span class="t-c"><span class="mw-geshi c source-c">__func__</span></span> 与</span> <span><span class="t-mark-rev t-since-c99">(C99 起)</span></span></span><a href="c-preprocessor-replace.html">预定义宏</a> <span class="t-c"><span class="mw-geshi c source-c">__FILE__</span></span>、 <span class="t-c"><span class="mw-geshi c source-c">__LINE__</span></span> 的值。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>condition</td>
|
||||
<td>-</td>
|
||||
<td>标量类型表达式</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>(无)</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">注解</span></h3>
|
||||
<p>没有标准化的添加消息到 <code>assert</code> 错误的接口。一个包含它的方式是使用<a href="c-language-operator_other.html#.E9.80.97.E5.8F.B7.E8.BF.90.E7.AE.97.E7.AC.A6">逗号运算符</a>:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1">assert<span class="br0">(</span><span class="br0">(</span><span class="st0">"There are five lights"</span>, <span class="nu0">2</span> <span class="sy2">+</span> <span class="nu0">2</span> <span class="sy1">==</span> <span class="nu0">5</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span></pre></div>
|
||||
</div>
|
||||
<p><code>assert</code> 在 <a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/assert-macro-assert-wassert?view=msvc-160">Microsoft CRT</a> 中的实现不遵从 C99 以及后续标准版本,因为其底层函数 ( <code>_wassert</code> )不接收 <span class="t-c"><span class="mw-geshi c source-c">__func__</span></span> 或等价的替代品。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co1">// 反注释可禁用 assert()</span>
|
||||
<span class="co1">// #define NDEBUG</span>
|
||||
<span class="co2">#include <assert.h></span>
|
||||
<span class="co2">#include <math.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw4">double</span> x <span class="sy1">=</span> <span class="sy2">-</span><span class="nu16">1.0</span><span class="sy4">;</span>
|
||||
assert<span class="br0">(</span>x <span class="sy1">>=</span> <span class="nu16">0.0</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"sqrt(x) = %f<span class="es1">\n</span>"</span>, <a href="c-numeric-math-sqrt.html"><span class="kw664">sqrt</span></a><span class="br0">(</span>x<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw1">return</span> <span class="nu0">0</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">output with NDEBUG not defined:
|
||||
a.out: main.cpp:10: main: Assertion `x >= 0.0' failed.
|
||||
|
||||
output with NDEBUG defined:
|
||||
sqrt(x) = -nan</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-17">
|
||||
<ul>
|
||||
<li>C17 标准(ISO/IEC 9899:2018):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.2.1.1 The assert macro (p: 135)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.2.1.1 The assert macro (p: 186-187)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.2.1.1 The assert macro (p: 169)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.2.1.1 The assert macro</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-program-abort.html"><span class="t-lines"><span>abort</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>引发非正常的程序终止(不清理)<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,202 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>errno</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_error_errno skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">errno</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-error.html">error</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><errno.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><span class="co2">#define errno /*implementation-defined*/</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><code>errno</code> 是一个预处理器宏(见后述),展开成<span class="t-rev-inl t-since-c11"><span>线程局域的</span> <span><span class="t-mark-rev t-since-c11">(C11 起)</span></span></span> <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">int</span></span></span> 类型可修改左值。一些标准库函数通过写入正整数到 <code>errno</code> 指定错误。通常,会将 <code>errno</code> 的值设置为错误码之一。错误码作为以字母 <code>E</code> 后随大写字母或数字开始的宏常量,列于 <code><errno.h></code> 。</p>
|
||||
<p><code>errno</code> 的值在程序启动时为 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> ,而且无论是否出现错误,都允许库函数将正整数写入 <code>errno</code> ,不过库函数决不会将 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> 存储于 <code>errno</code> 。</p>
|
||||
<p>库函数 <span class="t-lc"><a href="c-io-perror.html">perror</a></span> 和 <span class="t-lc"><a href="c-string-byte-strerror.html">strerror</a></span> 能用于获得对应当前 <code>errno</code> 值的错误条件的文本描述。</p>
|
||||
<p>注解: C11 前, C 标准有矛盾的要求,称 <code>errno</code> 是宏但<i>亦</i>称“不指明 <code>errno</code> 是宏还是声明带外部链接的标识符”。 C11 修正了此错误,要求必须定义它为宏(参阅 WG14 <a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1338.htm">N1338</a> )。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <math.h></span>
|
||||
<span class="co2">#include <errno.h></span>
|
||||
|
||||
<span class="kw4">void</span> show_errno<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span>err_info <span class="sy1">=</span> <span class="st0">"unknown error"</span><span class="sy4">;</span>
|
||||
<span class="kw1">switch</span> <span class="br0">(</span><span class="kw2">errno</span><span class="br0">)</span> <span class="br0">{</span>
|
||||
<span class="kw1">case</span> <a href="c-error-errno_macros.html"><span class="kw425">EDOM</span></a><span class="sy4">:</span>
|
||||
err_info <span class="sy1">=</span> <span class="st0">"domain error"</span><span class="sy4">;</span>
|
||||
<span class="kw1">break</span><span class="sy4">;</span>
|
||||
<span class="kw1">case</span> <a href="c-error-errno_macros.html"><span class="kw431">EILSEQ</span></a><span class="sy4">:</span>
|
||||
err_info <span class="sy1">=</span> <span class="st0">"illegal sequence"</span><span class="sy4">;</span>
|
||||
<span class="kw1">break</span><span class="sy4">;</span>
|
||||
<span class="kw1">case</span> <a href="c-error-errno_macros.html"><span class="kw477">ERANGE</span></a><span class="sy4">:</span>
|
||||
err_info <span class="sy1">=</span> <span class="st0">"pole or range error"</span><span class="sy4">;</span>
|
||||
<span class="kw1">break</span><span class="sy4">;</span>
|
||||
<span class="kw1">case</span> <span class="nu0">0</span><span class="sy4">:</span>
|
||||
err_info <span class="sy1">=</span> <span class="st0">"no error"</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
<a href="c-io-fputs.html"><span class="kw831">fputs</span></a><span class="br0">(</span>err_info, <a href="c-io.html"><span class="kw886">stdout</span></a><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-puts.html"><span class="kw835">puts</span></a><span class="br0">(</span><span class="st0">" occurred"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-io-fputs.html"><span class="kw831">fputs</span></a><span class="br0">(</span><span class="st0">"MATH_ERRNO is "</span>, <a href="c-io.html"><span class="kw886">stdout</span></a><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-puts.html"><span class="kw835">puts</span></a><span class="br0">(</span>math_errhandling <span class="sy3">&</span> MATH_ERRNO <span class="sy4">?</span> <span class="st0">"set"</span> <span class="sy4">:</span> <span class="st0">"not set"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw2">errno</span> <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
|
||||
<span class="nu16">1.0</span><span class="sy2">/</span><span class="nu16">0.0</span><span class="sy4">;</span>
|
||||
show_errno<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw2">errno</span> <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
|
||||
<a href="c-numeric-math-acos.html"><span class="kw672">acos</span></a><span class="br0">(</span><span class="sy2">+</span><span class="nu16">1.1</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
show_errno<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw2">errno</span> <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
|
||||
<a href="c-numeric-math-log.html"><span class="kw659">log</span></a><span class="br0">(</span><span class="nu16">0.0</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
show_errno<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw2">errno</span> <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
|
||||
<a href="c-numeric-math-sin.html"><span class="kw668">sin</span></a><span class="br0">(</span><span class="nu16">0.0</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
show_errno<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>可能的输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">MATH_ERRNO is set
|
||||
no error occurred
|
||||
domain error occurred
|
||||
pole or range error occurred
|
||||
no error occurred</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.5 Errors <errno.h> (p: 205)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.1.3 Use of errno (p: 584)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.2 Errors <errno.h> (p: 585)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.5 Errors <errno.h> (p: 186)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.1.3 Errors <errno.h></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-error-errno_macros.html"><span class="t-lines"><span>E2BIG, EACCES, ..., EXDEV</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>标准 POSIX 兼容的错误条件宏<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-perror.html"><span class="t-lines"><span>perror</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>显示对应当前错误的字符串到 <span class="t-lc"><a href="c-io.html">stderr</a></span><br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-string-byte-strerror.html"><span class="t-lines"><span>strerror</span><span>strerror_s</span><span>strerrorlen_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>返回给定错误码的文本版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-numeric-math-math_errhandling.html"><span class="t-lines"><span>math_errhandling</span><span>MATH_ERRNO</span><span>MATH_ERREXCEPT</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c99">(C99)</span></span><span><span class="t-mark-rev t-since-c99">(C99)</span></span><span><span class="t-mark-rev t-since-c99">(C99)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>定义用于常用数学函数的错误处理机制<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,159 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>错误号</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_error_errno_macros skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">错误号</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-error.html">error</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<p>每个定义于 <code><errno.h></code> 的宏都展开成 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">int</span></span></span> 类型的整数常量表达式,并且拥有独立的正整数值。下列常量得到定义(实现可以定义更多,只要以 <span class="t-c"><span class="mw-geshi c source-c"><span class="st0">'E'</span></span></span> 开始,后随数字或大写字母):</p>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><errno.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>EDOM</span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>数学参数在定义域外<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>EILSEQ</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c95">(C95)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>非法字节序列<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>ERANGE</span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>结果过大<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h3>
|
||||
<p><a rel="nofollow" class="external text" href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html">POSIX</a> 和 <a href="cpp-error-errno_macros.html">C++ 标准库</a>定义了更多的额外错误常量,而且每一个单独实现可能定义更多,例如 Linux 上的 <code>errno(3)</code> 或 BSD 和 OS X 上的 <code>intro(2)</code> 。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <math.h></span>
|
||||
<span class="co2">#include <errno.h></span>
|
||||
<span class="co2">#include <string.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw2">errno</span> <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw773">printf</span></a><span class="br0">(</span><span class="st0">"log(-1.0) = %f<span class="es1">\n</span>"</span>, <a href="c-numeric-math-log.html"><span class="kw582">log</span></a><span class="br0">(</span><span class="sy2">-</span><span class="nu16">1.0</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw773">printf</span></a><span class="br0">(</span><span class="st0">"%s<span class="es1">\n</span><span class="es1">\n</span>"</span>,<a href="c-string-byte-strerror.html"><span class="kw496">strerror</span></a><span class="br0">(</span><span class="kw2">errno</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw2">errno</span> <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw773">printf</span></a><span class="br0">(</span><span class="st0">"log(0.0) = %f<span class="es1">\n</span>"</span>, <a href="c-numeric-math-log.html"><span class="kw582">log</span></a><span class="br0">(</span><span class="nu16">0.0</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw773">printf</span></a><span class="br0">(</span><span class="st0">"%s<span class="es1">\n</span>"</span>,<a href="c-string-byte-strerror.html"><span class="kw496">strerror</span></a><span class="br0">(</span><span class="kw2">errno</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>可能的输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">log(-1.0) = nan
|
||||
Numerical argument out of domain
|
||||
|
||||
log(0.0) = -inf
|
||||
Numerical result out of range</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.5/2 Errors <errno.h> (p: 205)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.5/2 Errors <errno.h> (p: 186)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.1.3 Errors <errno.h></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-error-errno.html"><span class="t-lines"><span>errno</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>展开成 POSIX 兼容的线程局域错误编号变量<br />
|
||||
<span class="t-mark">(宏变量)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-perror.html"><span class="t-lines"><span>perror</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>显示对应当前错误的字符串到 <span class="t-lc"><a href="c-io.html">stderr</a></span><br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-string-byte-strerror.html"><span class="t-lines"><span>strerror</span><span>strerror_s</span><span>strerrorlen_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>返回给定错误码的文本版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,151 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>ignore_handler_s</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_error_ignore_handler_s skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">ignore_handler_s</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-error.html">error</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdlib.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">void</span> ignore_handler_s<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span> <span class="kw4">restrict</span> msg,<br /></span>
|
||||
<p> <span class="kw4">void</span> <span class="sy2">*</span> <span class="kw4">restrict</span> ptr,<br />
|
||||
errno_t error<br /></p>
|
||||
<span class="br0">)</span><span class="sy4">;</span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>该函数会简单返回调用方,而不进行任何动作。</p>
|
||||
<p>可以传递指向此函数的指针给 <a href="c-error-set_constraint_handler_s.html">set_constraint_handler_s</a> 以建立无任何动作的运行时制约违规处理。</p>
|
||||
<dl>
|
||||
<dd></dd>
|
||||
<dd>同所有边界检查函数, <code>ignore_handler_s</code> 仅若实现定义了 <span class="t-c"><span class="mw-geshi c source-c">__STDC_LIB_EXT1__</span></span> ,且用户在包含 <code><stdlib.h></code> 前定义 <span class="t-c"><span class="mw-geshi c source-c">__STDC_WANT_LIB_EXT1__</span></span> 为整数常量 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> 才保证可用。</dd>
|
||||
</dl>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>msg</td>
|
||||
<td>-</td>
|
||||
<td>指向描述错误的字符串的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>ptr</td>
|
||||
<td>-</td>
|
||||
<td>指向实现定义的对象的指针或空指针。实现定义对象的例子,是给出检测到违规的函数名和检测到违规时的行号的对象</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>error</td>
|
||||
<td>-</td>
|
||||
<td>要由调用方函数返回的错误号,若它正好是返回 <code>errno_t</code> 的函数之一</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>(无)</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h3>
|
||||
<p>若以 <code>ignore_handler_s</code> 为运行时制约违规处理函数,则可通过检验边界检查函数的调用结果检测违规,这对于不同函数可能不同(非零 <span class="t-lc">errno_t</span> ,写入到输出字符串的空字符等等)。</p>
|
||||
<p>若从不调用 <code>set_constraint_handler_s</code> ,则默认处理是实现定义的:它可以是 <span class="t-lc">abort_handler_s</span> 、 <span class="t-lc">ignore_handler_s</span> 或另外的实现定义处理函数。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#define __STDC_WANT_LIB_EXT1__ 1</span>
|
||||
<span class="co2">#include <string.h></span>
|
||||
<span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="co2">#ifdef __STDC_LIB_EXT1__</span>
|
||||
<span class="kw4">char</span> dst<span class="br0">[</span><span class="nu0">2</span><span class="br0">]</span><span class="sy4">;</span>
|
||||
set_constraint_handler_s<span class="br0">(</span>ignore_handler_s<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw4">int</span> r <span class="sy1">=</span> strcpy_s<span class="br0">(</span>dst, <span class="kw4">sizeof</span> dst, <span class="st0">"Too long!"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"dst = <span class="es1">\"</span>%s<span class="es1">\"</span>, r = %d<span class="es1">\n</span>"</span>, dst, r<span class="br0">)</span><span class="sy4">;</span>
|
||||
set_constraint_handler_s<span class="br0">(</span>abort_handler_s<span class="br0">)</span><span class="sy4">;</span>
|
||||
r <span class="sy1">=</span> strcpy_s<span class="br0">(</span>dst, <span class="kw4">sizeof</span> dst, <span class="st0">"Too long!"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"dst = <span class="es1">\"</span>%s<span class="es1">\"</span>, r = %d<span class="es1">\n</span>"</span>, dst, r<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="co2">#endif</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>可能的输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">dst = "", r = 22
|
||||
abort_handler_s was called in response to a runtime-constraint violation.
|
||||
|
||||
The runtime-constraint violation was caused by the following expression in strcpy_s:
|
||||
(s1max <= (s2_len=strnlen_s(s2, s1max)) ) (in string_s.c:62)
|
||||
|
||||
Note to end users: This program was terminated as a result
|
||||
of a bug present in the software. Please reach out to your
|
||||
software's vendor to get more help.
|
||||
Aborted</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.6.1.3 The ignore_handler_s function (p: 606)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-error-abort_handler_s.html"><span class="t-lines"><span>abort_handler_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>边界检查函数的异常中止回调<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-error-set_constraint_handler_s.html"><span class="t-lines"><span>set_constraint_handler_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>设置边界检查函数的出错回调<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,172 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>set_constraint_handler_s, constraint_handler_t</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_error_set_constraint_handler_s skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">set_constraint_handler_s, constraint_handler_t</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-error.html">error</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdlib.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">constraint_handler_t set_constraint_handler_s<span class="br0">(</span> constraint_handler_t handler <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>配置所有<a href="c-error.html#.E8.BE.B9.E7.95.8C.E6.A3.80.E6.9F.A5">边界检查函数</a>在运行时制约违规时所调用的处理函数,或将其恢复成默认(若 <code>handler</code> 是空指针)。</p>
|
||||
<p>此处理函数必须是 <span class="t-c"><span class="mw-geshi c source-c">constraint_handler_t</span></span> 的函数指针,定义如下:</p>
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdlib.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw1">typedef</span> <span class="kw4">void</span> <span class="br0">(</span><span class="sy2">*</span>constraint_handler_t<span class="br0">)</span><span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> msg,<br /></span>
|
||||
<p> <span class="kw4">void</span> <span class="sy2">*</span><span class="kw4">restrict</span> ptr,<br /></p>
|
||||
errno_t error<span class="br0">)</span><span class="sy4">;</span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>运行时制约违规发生时,会按照以下参数调用它:</p>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 指向描述错误的字符串的指针</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 指向实现定义的对象的指针或空指针。实现定义对象的例子,是给出检测到违规的函数名和检测到违规时的行号的对象</div>
|
||||
<div class="t-li1"><span class="t-li">3)</span> 要由调用方函数返回的错误编号,若它正好是返回 <code>errno_t</code> 的函数之一</div>
|
||||
<p>若从不调用 <code>set_constraint_handler_s</code> ,则默认处理是实现定义的:它可以是 <span class="t-lc">abort_handler_s</span> 、 <span class="t-lc">ignore_handler_s</span> 或另外的实现定义处理函数。</p>
|
||||
<dl>
|
||||
<dd></dd>
|
||||
<dd>同所有边界检查函数, <code>set_constraint_handler_s, constraint_handler_t</code> 仅若实现定义了 <span class="t-c"><span class="mw-geshi c source-c">__STDC_LIB_EXT1__</span></span> ,且用户在包含 <code><stdlib.h></code> 前定义 <span class="t-c"><span class="mw-geshi c source-c">__STDC_WANT_LIB_EXT1__</span></span> 为整数常量 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> 才保证可用。</dd>
|
||||
</dl>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>handler</td>
|
||||
<td>-</td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c">constraint_handler_t</span></span> 类型的函数指针或空指针</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>指向先前安装运行时制约处理函数的指针(注意:此指针决不会是空指针,因为调用 <span class="t-c"><span class="mw-geshi c source-c">set_constraint_handler_s<span class="br0">(</span><a href="c-types-NULL.html"><span class="kw103">NULL</span></a><span class="br0">)</span></span></span> 会设置系统默认处理函数)。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#define __STDC_WANT_LIB_EXT1__ 1</span>
|
||||
<span class="co2">#include <string.h></span>
|
||||
<span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="co2">#ifdef __STDC_LIB_EXT1__</span>
|
||||
<span class="kw4">char</span> dst<span class="br0">[</span><span class="nu0">2</span><span class="br0">]</span><span class="sy4">;</span>
|
||||
set_constraint_handler_s<span class="br0">(</span>ignore_handler_s<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw4">int</span> r <span class="sy1">=</span> strcpy_s<span class="br0">(</span>dst, <span class="kw4">sizeof</span> dst, <span class="st0">"Too long!"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"dst = <span class="es1">\"</span>%s<span class="es1">\"</span>, r = %d<span class="es1">\n</span>"</span>, dst, r<span class="br0">)</span><span class="sy4">;</span>
|
||||
set_constraint_handler_s<span class="br0">(</span>abort_handler_s<span class="br0">)</span><span class="sy4">;</span>
|
||||
r <span class="sy1">=</span> strcpy_s<span class="br0">(</span>dst, <span class="kw4">sizeof</span> dst, <span class="st0">"Too long!"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"dst = <span class="es1">\"</span>%s<span class="es1">\"</span>, r = %d<span class="es1">\n</span>"</span>, dst, r<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="co2">#endif</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>可能的输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">dst = "", r = 22
|
||||
abort_handler_s was called in response to a runtime-constraint violation.
|
||||
|
||||
The runtime-constraint violation was caused by the following expression in strcpy_s:
|
||||
(s1max <= (s2_len=strnlen_s(s2, s1max)) ) (in string_s.c:62)
|
||||
|
||||
Note to end users: This program was terminated as a result
|
||||
of a bug present in the software. Please reach out to your
|
||||
software's vendor to get more help.
|
||||
Aborted</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.6/2 constraint_handler_t (p: 604)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.6.1.1 The set_constraint_handler_s function (p: 604-605)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-error-abort_handler_s.html"><span class="t-lines"><span>abort_handler_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>边界检查函数的异常中止回调<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-error-ignore_handler_s.html"><span class="t-lines"><span>ignore_handler_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>边界检查函数的忽略回调<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,75 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>static_assert</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_error_static_assert skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">static_assert</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-error.html">error</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><assert.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><span class="co2">#define static_assert _Static_assert</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>此便利宏展开成关键词 <a href="c-keyword-_Static_assert.html">_Static_assert</a> 。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <assert.h></span>
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
static_assert<span class="br0">(</span><span class="nu0">2</span> <span class="sy2">+</span> <span class="nu0">2</span> <span class="sy1">==</span> <span class="nu0">4</span>, <span class="st0">"2+2 isn't 4"</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// 良式</span>
|
||||
static_assert<span class="br0">(</span><span class="kw4">sizeof</span><span class="br0">(</span><span class="kw4">int</span><span class="br0">)</span> <span class="sy1"><</span> <span class="kw4">sizeof</span><span class="br0">(</span><span class="kw4">char</span><span class="br0">)</span>,
|
||||
<span class="st0">"this program requires that int is less than char"</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// 编译时错误</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.2/3 Diagnostics <assert.h> (p: 186)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin"></table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,401 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>错误处理</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_error skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">错误处理</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<h3><span class="mw-headline" id=".E9.94.99.E8.AF.AF.E5.8F.B7">错误号</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><errno.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-error-errno.html"><span class="t-lines"><span>errno</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>展开成 POSIX 兼容的线程局域错误编号变量<br />
|
||||
<span class="t-mark">(宏变量)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-error-errno_macros.html"><span class="t-lines"><span>E2BIG, EACCES, ..., EXDEV</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>标准 POSIX 兼容的错误条件宏<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E6.96.AD.E8.A8.80">断言</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><assert.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-error-assert.html"><span class="t-lines"><span>assert</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>若用户指定的条件非<span class="t-c"><span class="mw-geshi c source-c"><span class="kw2">true</span></span></span>,则异常终止程序。可以在发行版本禁用。<br />
|
||||
<span class="t-mark">(宏函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-error-static_assert.html"><span class="t-lines"><span>static_assert</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>若常量表达式为假则发布编译诊断<br />
|
||||
<span class="t-mark">(关键词宏)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="t-rev-begin">
|
||||
<tr class="t-rev t-since-c11">
|
||||
<td>
|
||||
<h3><span class="mw-headline" id=".E8.BE.B9.E7.95.8C.E6.A3.80.E6.9F.A5">边界检查</span></h3>
|
||||
<p>标准库提供了一些既存函数的边界检查版本( <span class="t-lc"><a href="c-io-gets.html">gets_s</a></span> 、 <span class="t-lc"><a href="c-io-fopen.html">fopen_s</a></span> 、 <span class="t-lc"><a href="c-io-fprintf.html">printf_s</a></span> 、 <span class="t-lc"><a href="c-string-byte-strcpy.html">strcpy_s</a></span> 、 <span class="t-lc"><a href="c-string-wide-wcscpy.html">wcscpy_s</a></span> 、 <span class="t-lc"><a href="c-string-multibyte-mbstowcs.html">mbstowcs_s</a></span> 、 <span class="t-lc"><a href="c-algorithm-qsort.html">qsort_s</a></span> 、 <span class="t-lc"><a href="c-program-getenv.html">getenv_s</a></span> 等)。这些功能是可选的,并且仅若定义 <span class="t-c"><span class="mw-geshi c source-c">__STDC_LIB_EXT1__</span></span> 才可用。下列宏和函数支持此功能。</p>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><errno.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>errno_t</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>对 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">int</span></span></span> 的 typedef ,用于自描述性函数返回 <span class="t-lc"><a href="c-error-errno.html">errno</a></span> 值<br />
|
||||
<span class="t-mark">(typedef)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><stddef.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><stdlib.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><string.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><time.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><wchar.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>rsize_t</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>对 <span class="t-lc"><a href="c-types-size_t.html">size_t</a></span> 相同类型的 typedef ,用于自描述性函数在运行时检查它们的参数范围<br />
|
||||
<span class="t-mark">(typedef)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><stdint.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>RSIZE_MAX</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>范围检查函数可接受的最大大小,展开成常量或可能在运行时改变的变量(例如,当前分配的内存大小改变时)<br />
|
||||
<span class="t-mark">(宏变量)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><stdlib.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-error-set_constraint_handler_s.html"><span class="t-lines"><span>set_constraint_handler_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>设置边界检查函数的出错回调<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-error-abort_handler_s.html"><span class="t-lines"><span>abort_handler_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>边界检查函数的异常中止回调<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-error-ignore_handler_s.html"><span class="t-lines"><span>ignore_handler_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>边界检查函数的忽略回调<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>注意:边界检查函数的实现可用于开源库 <a rel="nofollow" class="external text" href="https://github.com/rurban/safeclib/">Safe C</a> 及 <a rel="nofollow" class="external text" href="https://code.google.com/archive/p/slibc/">Slibc</a> ,还有 Watcom C 的一部分。亦有可用于 Visual Studio 的边界检查函数的不兼容集合。</p>
|
||||
</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.2 Diagnostics <assert.h> (p: 186-187)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.5 Errors <errno.h> (p: 205)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19 Common definitions <stddef.h> (p: 288)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.20 Integer types <stdint.h> (p: 289-295)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21 Input/output <stdio.h> (p: 296-339)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.22 General utilities <stdlib.h> (p: 340-360)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.1.3 Use of errno (p: 584)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.2/2 errno_t (p: 585)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.3/2 rsize_t (p: 585)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.4/2 RSIZE_MAX (p: 585)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.31.3 Errors <errno.h> (p: 455)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.31.10 Integer types <stdint.h> (p: 456)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.31.11 Input/output <stdio.h> (p: 456)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.31.12 General utilities <stdlib.h> (p: 456)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.2 Diagnostics <assert.h> (p: 169)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.5 Errors <errno.h> (p: 186)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.26.3 Errors <errno.h> (p: 401)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.26.8 Integer types <stdint.h> (p: 401)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.26.9 Input/output <stdio.h> (p: 402)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.26.10 General utilities <stdlib.h> (p: 402)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.2 DIAGNOSTICS <assert.h></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.1.3 Errors <errno.h></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.13.1 Errors <errno.h></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.13.6 Input/output <stdio.h></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.13.7 General utilities <stdlib.h></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-numeric-math-math_errhandling.html"><span class="t-lines"><span>math_errhandling</span><span>MATH_ERRNO</span><span>MATH_ERREXCEPT</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c99">(C99)</span></span><span><span class="t-mark-rev t-since-c99">(C99)</span></span><span><span class="t-mark-rev t-since-c99">(C99)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>定义用于常用数学函数的错误处理机制<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,179 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>getline, getwline, getdelim, getwdelim</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_experimental_dynamic_getline skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">getline, getwline, getdelim, getwdelim</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-experimental.html">experimental</a>‎ | <a href="c-experimental-dynamic.html">dynamic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">ssize_t getline<span class="br0">(</span><span class="kw4">char</span> <span class="sy2">**</span>lineptr, <a href="c-types-size_t.html"><span class="kw100">size_t</span></a> <span class="sy2">*</span>n, <a href="c-io.html"><span class="kw884">FILE</span></a> <span class="sy2">*</span>stream<span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(1)</td>
|
||||
<td><span class="t-mark-rev t-since-dynamic-tr t-mark-ts">(动态内存 TR)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">ssize_t getwline<span class="br0">(</span><span class="kw4">wchar_t</span> <span class="sy2">**</span>lineptr, <a href="c-types-size_t.html"><span class="kw100">size_t</span></a> <span class="sy2">*</span>n, <a href="c-io.html"><span class="kw884">FILE</span></a> <span class="sy2">*</span>stream<span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(2)</td>
|
||||
<td><span class="t-mark-rev t-since-dynamic-tr t-mark-ts">(动态内存 TR)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">ssize_t getdelim<span class="br0">(</span><span class="kw4">char</span> <span class="sy2">**</span> <span class="kw4">restrict</span> lineptr, <a href="c-types-size_t.html"><span class="kw100">size_t</span></a> <span class="sy2">*</span> <span class="kw4">restrict</span> n,<br />
|
||||
<span class="kw4">int</span> delimiter, <a href="c-io.html"><span class="kw884">FILE</span></a> <span class="sy2">*</span>stream<span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(3)</td>
|
||||
<td><span class="t-mark-rev t-since-dynamic-tr t-mark-ts">(动态内存 TR)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">ssize_t getwdelim<span class="br0">(</span><span class="kw4">wchar_t</span> <span class="sy2">**</span> <span class="kw4">restrict</span> lineptr, <a href="c-types-size_t.html"><span class="kw100">size_t</span></a> <span class="sy2">*</span> <span class="kw4">restrict</span> n,<br />
|
||||
wint_t delimiter, <a href="c-io.html"><span class="kw884">FILE</span></a> <span class="sy2">*</span> stream<span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(4)</td>
|
||||
<td><span class="t-mark-rev t-since-dynamic-tr t-mark-ts">(动态内存 TR)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 表现同 <span class="t-c"><span class="mw-geshi c source-c">getdelim<span class="br0">(</span>lineptr, n, <span class="st0">'<span class="es1">\n</span>'</span>, stream<span class="br0">)</span></span></span> 。</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 表现同 <span class="t-c"><span class="mw-geshi c source-c">getwdelim<span class="br0">(</span>lineptr, n, L<span class="st0">'<span class="es1">\n</span>'</span>, stream<span class="br0">)</span></span></span> 。</div>
|
||||
<div class="t-li1"><span class="t-li">3)</span> 如同用 <span class="t-lc"><a href="c-io-fgetc.html">fgetc</a></span> 从流 <code>stream</code> 读取直至遇到 <code>delimiter</code> ,并将字符存储于 <code>*lineptr</code> 所指向的大小为 <code>*n</code> 的缓冲区,如同用 <span class="t-lc"><a href="c-memory-realloc.html">realloc</a></span> 自动增加其大小以适应包含分隔符的整个输入,再加上空终止符。 <code>*lineptr</code> 可以为空,该情况下忽略 <code>*n</code> , <code>getline</code> 如同用 <span class="t-lc"><a href="c-memory-malloc.html">malloc</a></span> 分配一个新缓冲区。 若 <code>delimiter</code> 拥有 <code>unsigned char</code> 范围外的值且非 <span class="t-lc"><a href="c-io.html">EOF</a></span> ,则行为未定义。</div>
|
||||
<div class="t-li1"><span class="t-li">4)</span> 同 <span class="t-v">(3)</span> ,除了如同以 <span class="t-lc"><a href="c-io-fgetwc.html">fgetwc</a></span> 读入字符,而 <code>delimiter</code> 必须是合法的 <code>wchar_t</code> 或 <span class="t-lc">WEOF</span> 。</div>
|
||||
<p>若 <code>*lineptr</code> 非空,则若 <code>*lineptr</code> 不是能传递给 <span class="t-lc"><a href="c-memory-free.html">free</a></span> 的指针,或若 <code>*n</code> 小于 <code>*lineptr</code> 所指向内存的被分配大小,则行为未定义。</p>
|
||||
<p>同所有来自动态内存 TR 的函数, <code>getline</code> 仅若实现定义了 <span class="t-c"><span class="mw-geshi c source-c">__STDC_ALLOC_LIB__</span></span> 且用户在包含 <code>stdio.h</code> 前定义 <span class="t-c"><span class="mw-geshi c source-c">__STDC_WANT_LIB_EXT2__</span></span> 为整数常量 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> 才保证可用。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>lineptr</td>
|
||||
<td>-</td>
|
||||
<td>指针,指向空指针,或指向指向最初缓冲区的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>n</td>
|
||||
<td>-</td>
|
||||
<td>指向最初缓冲区大小的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>delimiter</td>
|
||||
<td>-</td>
|
||||
<td>分隔字符</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td><span class="t-lc"><a href="c-io-fopen.html">fopen</a></span> 打开的合法输入流</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>存储于缓冲区的字符数,包含分隔符,但排除空终止符。</p>
|
||||
<p>错误时返回 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">-</span><span class="nu0">1</span></span></span> 并设置 <code>stream</code> 上的 <span class="t-lc"><a href="c-io-feof.html">feof</a></span> 或 <span class="t-lc"><a href="c-io-ferror.html">ferror</a></span> 。</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h3>
|
||||
<p>这些函数等同于其 <a rel="nofollow" class="external text" href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/getdelim.html">POSIX 版本</a>,除了允许但不要求在错误时设置 <span class="t-lc"><a href="c-error-errno.html">errno</a></span> 。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#ifdef __STDC_ALLOC_LIB__</span>
|
||||
<span class="co2">#define __STDC_WANT_LIB_EXT2__ 1</span>
|
||||
<span class="co2">#else</span>
|
||||
<span class="co2">#define _POSIX_C_SOURCE 200809L</span>
|
||||
<span class="co2">#endif</span>
|
||||
|
||||
<span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
<span class="kw4">void</span> get_y_or_n<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw4">char</span> <span class="sy2">*</span>response <span class="sy1">=</span> <a href="c-types-NULL.html"><span class="kw103">NULL</span></a><span class="sy4">;</span>
|
||||
<a href="c-types-size_t.html"><span class="kw100">size_t</span></a> len<span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"Continue? [y] n: "</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">if</span><span class="br0">(</span><span class="br0">(</span>getline<span class="br0">(</span><span class="sy3">&</span>response, <span class="sy3">&</span>len, <a href="c-io.html"><span class="kw886">stdin</span></a><span class="br0">)</span> <span class="sy1"><</span> <span class="nu0">0</span><span class="br0">)</span> <span class="sy3">||</span> <span class="br0">(</span>len <span class="sy3">&&</span> response<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span> <span class="sy1">==</span> <span class="st0">'n'</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span>
|
||||
<a href="c-memory-free.html"><span class="kw406">free</span></a><span class="br0">(</span>response<span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-program-exit.html"><span class="kw488">exit</span></a><span class="br0">(</span><span class="nu0">0</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
<a href="c-memory-free.html"><span class="kw406">free</span></a><span class="br0">(</span>response<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">return</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
get_y_or_n<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">Continue? [y] n:</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fgets.html"><span class="t-lines"><span>fgets</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从文件流获取一个字符串<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-gets.html"><span class="t-lines"><span>gets</span><span>gets_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-until-c11">(C11 中移除)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从 <code>stdin</code> 读取一个字符串<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fgetws.html"><span class="t-lines"><span>fgetws</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c95">(C95)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从文件流获取一个宽字符串<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-memory-malloc.html"><span class="t-lines"><span>malloc</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>分配内存<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,116 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>strdup</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_experimental_dynamic_strdup skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">strdup</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-experimental.html">experimental</a>‎ | <a href="c-experimental-dynamic.html">dynamic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><string.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">char</span> <span class="sy2">*</span> strdup<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span>str1 <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-dynamic-tr t-mark-ts">(动态内存 TR)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>返回指向空终止字符串的指针,字符串是 <code>str1</code> 所指向字符串的副本。返回的指针必须传递给 <span class="t-lc"><a href="c-memory-free.html">free</a></span> 以避免内存泄漏。</p>
|
||||
<p>若错误发生,则返回空指针,并可能设置 <span class="t-lc"><a href="c-error-errno.html">errno</a></span> 。</p>
|
||||
<p>同所有来自动态内存 TR 的函数, <code>strdup</code> 仅若实现定义了 <span class="t-c"><span class="mw-geshi c source-c">__STDC_ALLOC_LIB__</span></span> 且用户在包含 <code>string.h</code> 前定义 <span class="t-c"><span class="mw-geshi c source-c">__STDC_WANT_LIB_EXT2__</span></span> 为整数常量 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> 才保证可用。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>str1</td>
|
||||
<td>-</td>
|
||||
<td>指向要被复制的空终止字符串的指针</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>指向新分配字符串的指针,若出现错误则为空指针。</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">注解</span></h3>
|
||||
<p>此函数等同于 <a rel="nofollow" class="external text" href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/strdup.html">POSIX strdup</a> 。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#ifdef __STDC_ALLOC_LIB__</span>
|
||||
<span class="co2">#define __STDC_WANT_LIB_EXT2__ 1</span>
|
||||
<span class="co2">#else</span>
|
||||
<span class="co2">#define _POSIX_C_SOURCE 200809L</span>
|
||||
<span class="co2">#endif</span>
|
||||
|
||||
<span class="co2">#include <string.h></span>
|
||||
<span class="co2">#include <assert.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span>s1 <span class="sy1">=</span> <span class="st0">"String"</span><span class="sy4">;</span>
|
||||
<span class="kw4">char</span> <span class="sy2">*</span>s2 <span class="sy1">=</span> strdup<span class="br0">(</span>s1<span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-error-assert.html"><span class="kw407">assert</span></a><span class="br0">(</span><a href="c-string-byte-strcmp.html"><span class="kw559">strcmp</span></a><span class="br0">(</span>s1, s2<span class="br0">)</span> <span class="sy1">==</span> <span class="nu0">0</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-memory-free.html"><span class="kw406">free</span></a><span class="br0">(</span>s2<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-experimental-dynamic-strndup.html"><span class="t-lines"><span>strndup</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-dynamic-tr t-mark-ts">(动态内存 TR)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>分配字符串副本,至多到指定的大小<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-string-byte-strcpy.html"><span class="t-lines"><span>strcpy</span><span>strcpy_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>复制一个字符串给另一个<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-memory-malloc.html"><span class="t-lines"><span>malloc</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>分配内存<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,130 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>strndup</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_experimental_dynamic_strndup skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">strndup</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-experimental.html">experimental</a>‎ | <a href="c-experimental-dynamic.html">dynamic</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><string.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">char</span> <span class="sy2">*</span>strndup<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span>str, <a href="c-types-size_t.html"><span class="kw100">size_t</span></a> size <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>返回指向空终止字符串的指针,该字符串含有 <code>str</code> 所指向字符串的至多 <code>size</code> 字节的副本。若在其首 <code>size</code> 字节中遇到空终止符,则将它添加到复制的字符串中。</p>
|
||||
<p>必须传递返回指针给 <span class="t-lc"><a href="c-memory-free.html">free</a></span> ,以避免内存泄漏。</p>
|
||||
<p>若发生错误,则返回空指针,并可能设置 <span class="t-lc"><a href="c-error-errno.html">errno</a></span> 。</p>
|
||||
<p>同所有来自动态内存 TR 的函数, <code>strndup</code> 仅若实现定义了 <span class="t-c"><span class="mw-geshi c source-c">__STDC_ALLOC_LIB__</span></span> 且用户在包含 <code>string.h</code> 前定义 <span class="t-c"><span class="mw-geshi c source-c">__STDC_WANT_LIB_EXT2__</span></span> 为整数常量 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> 才保证可用。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>str</td>
|
||||
<td>-</td>
|
||||
<td>指向要复制的空终止字符串的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>size</td>
|
||||
<td>-</td>
|
||||
<td>从 <code>str</code> 复制的最大字节数</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>指向新分配字符串的指针,若错误发生则为空指针。</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">注解</span></h3>
|
||||
<p>此函数等同于 <a rel="nofollow" class="external text" href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/strdup.html">POSIX strndup</a> ,除了允许但不要求它在错误时设置 <span class="t-lc"><a href="c-error-errno.html">errno</a></span> 。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#ifdef __STDC_ALLOC_LIB__</span>
|
||||
<span class="co2">#define __STDC_WANT_LIB_EXT2__ 1</span>
|
||||
<span class="co2">#else</span>
|
||||
<span class="co2">#define _POSIX_C_SOURCE 200809L</span>
|
||||
<span class="co2">#endif</span>
|
||||
|
||||
<span class="co2">#include <string.h></span>
|
||||
<span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span>s1 <span class="sy1">=</span> <span class="st0">"String"</span><span class="sy4">;</span>
|
||||
<span class="kw4">char</span> <span class="sy2">*</span>s2 <span class="sy1">=</span> strndup<span class="br0">(</span>s1, <span class="nu0">2</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"strndup(<span class="es1">\"</span>String<span class="es1">\"</span>, 2) == %s<span class="es1">\n</span>"</span>, s2<span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-memory-free.html"><span class="kw406">free</span></a><span class="br0">(</span>s2<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">strndup("String", 2) == St</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-experimental-dynamic-strdup.html"><span class="t-lines"><span>strdup</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-dynamic-tr t-mark-ts">(动态内存 TR)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>分配字符串的副本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-string-byte-strncpy.html"><span class="t-lines"><span>strncpy</span><span>strncpy_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从一个字符串复制一定数量的字符到另一个<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-memory-malloc.html"><span class="t-lines"><span>malloc</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>分配内存<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="t-dcl-begin">
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,108 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>动态内存扩展</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_experimental_dynamic skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">动态内存扩展</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-experimental.html">experimental</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<p>对 C 库的扩展部分 II :动态分配函数 (Extensions to the C Library Part II: Dynamic Allocation Functions) , ISO/IEC TR 24731-2:2010 ,为 C 标准库定义下列新组件:</p>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>__STDC_ALLOC_LIB__</span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>指遵从性等级的 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">long</span></span></span> 类型常量<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/dynamic/fmemopen&action=edit&redlink=1" class="new" title="c/experimental/dynamic/fmemopen(页面不存在)"><span class="t-lines"><span>fmemopen</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-dynamic-tr t-mark-ts">(动态内存 TR)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>把固定大小的内存缓冲区作为 I/O 流打开<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/dynamic/open_memstream&action=edit&redlink=1" class="new" title="c/experimental/dynamic/open memstream(页面不存在)"><span class="t-lines"><span>open_memstream</span><span>open_wmemstream</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-dynamic-tr t-mark-ts">(动态内存 TR)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>把动态改变大小的内存缓冲区作为 I/O 流打开<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/dynamic/asprintf&action=edit&redlink=1" class="new" title="c/experimental/dynamic/asprintf(页面不存在)"><span class="t-lines"><span>asprintf</span><span>aswprintf</span><span>vasprintf</span><span>vaswprintf</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-dynamic-tr t-mark-ts">(动态内存 TR)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc"><a href="c-io-fprintf.html">sprintf</a></span> 等的变体,写入自动分配的缓冲区并返回指向它的指针<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-experimental-dynamic-getline.html"><span class="t-lines"><span>getline</span><span>getwline</span><span>getdelim</span><span>getwdelim</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-dynamic-tr t-mark-ts">(动态内存 TR)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从流读入至动态改变大小的缓冲区,直到分隔符/行尾<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><string.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-experimental-dynamic-strdup.html"><span class="t-lines"><span>strdup</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-dynamic-tr t-mark-ts">(动态内存 TR)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>分配字符串的副本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-experimental-dynamic-strndup.html"><span class="t-lines"><span>strndup</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-dynamic-tr t-mark-ts">(动态内存 TR)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>分配字符串副本,至多到指定的大小<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>此库扩展亦引入赋值分配字符 <code><b>m</b></code> ,用于 <span class="t-lc"><a href="c-io-fscanf.html">fscanf</a></span> 和 <span class="t-lc"><a href="c-io-fwscanf.html">fwscanf</a></span> 函数族中的 <code><b>%s</b></code> 、 <code><b>%[</b></code> 及 <code><b>%c</b></code> 转换说明符。</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">注解</span></h3>
|
||||
<p>函数 <code>fmemopen</code> 、 <code>open_memstream</code> 、 <code>open_wmemstream</code> 、 <code>getdelim</code> 、 <code>getline</code> 、 <code>strdup</code> 、 <code>strndup</code> 及对 <code>fscanf</code> 的扩展于 <a rel="nofollow" class="external text" href="http://pubs.opengroup.org/onlinepubs/9699919799/">POSIX (ISO/IEC 9945:2003)</a> 可用。</p>
|
||||
<p>函数 <code>asprintf</code> 及 <code>vasprintf</code> 于 Linux 标准基础 (Linux Standard Base) (ISO/IEC IS 23360:2006) 可用。</p>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,759 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>浮点扩展部分 1 :二进制浮点算术</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_experimental_fpext1 skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">浮点扩展部分 1 :二进制浮点算术</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-experimental.html">experimental</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<p>C 浮点扩展 - 部分 1 :二进制浮点算术, ISO/IEC TS 18661-1:2014 ,为 C 标准库定义下列新组件,它们为 ISO/IEC/IEEE 60559:2011 ( IEEE-754 的当前版本)所推荐。</p>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>__STDC_IEC_60559_BFP__</span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">long</span></span></span> 类型值为 <span class="t-c"><span class="mw-geshi c source-c">201ymmL</span></span> 的整数常量,,取代 <span class="t-lc">__STDC_IEC_559__</span><br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>__STDC_IEC_60559_COMPLEX__</span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">long</span></span></span> 类型值为 <span class="t-c"><span class="mw-geshi c source-c">201ymmL</span></span> 的整数常量,取代 <span class="t-lc">__STDC_IEC_559_COMPLEX__</span><br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><limits.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>CHAR_WIDTH SCHAR_WIDTH UCHAR_WIDTH</span><span>SHRT_WIDTH USHRT_WIDTH</span><span>INT_WIDTH UINT_WIDTH</span><span>LONG_WIDTH ULONG_WIDTH</span><span>LLONG_WIDTH ULLONG_WIDTH</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>对应类型的宽度,以位数表示<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><float.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/CR_DECIMAL_DIG&action=edit&redlink=1" class="new" title="c/experimental/fpext1/CR DECIMAL DIG(页面不存在)"><span class="t-lines"><span>CR_DECIMAL_DIG</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>所有受支持二进制浮点类型和字符序列间的转换至多准确舍入到 CR_DECIMAL_DIG 位十进制有效数字(至少是 DECIMAL_DIG + 3 )<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><fenv.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>femode_t</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>实现支持的动态浮点控制模式的总集,包含动态舍入方向模式<br />
|
||||
<span class="t-mark">(typedef)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>FE_DFL_MODE</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>指向默认 femode_t 的指针<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>FE_SNANS_ALWAYS_SIGNAL</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>若 sNaN 参数导致压制 gNaN 的函数,如 <span class="t-lc"><a href="c-numeric-math-hypot.html">hypot</a></span> 或 <span class="t-lc"><a href="c-numeric-math-fmax.html">fmax</a></span> ,引发 FE_INVALID 并返回 gNaN ,则定义此宏(为整数常量 1 )<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/fesetexcept&action=edit&redlink=1" class="new" title="c/experimental/fpext1/fesetexcept(页面不存在)"><span class="t-lines"><span>fesetexcept</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>设置给定的浮点异常标志,并且不导致任何引发它们所产生的副效应<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/fetestexceptflag&action=edit&redlink=1" class="new" title="c/experimental/fpext1/fetestexceptflag(页面不存在)"><span class="t-lines"><span>fetestexceptflag</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>测试给定的标志是否在保存的浮点异常标志表示中<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/fegetmode_fesetmode&action=edit&redlink=1" class="new" title="c/experimental/fpext1/fegetmode fesetmode(页面不存在)"><span class="t-lines"><span>fegetmode</span><span>fesetmode</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>整体地获取和设置所有实现的动态浮点控制模式<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><stdint.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>INTn_WIDTH UINTn_WIDTH</span><span>INT_LEASTn_WIDTH UINT_LEASTn_WIDTH</span><span>INT_FASTn_WIDTH UINT_FASTn_WIDTH</span><span>INTPTR_WIDTH UINTPTR_WIDTH</span><span>INTMAX_WIDTH UINTMAX_WIDTH</span><span>PTRDIFF_WIDTH</span><span>SIG_ATOMIC_WIDTH</span><span>SIZE_WIDTH</span><span>WCHAR_WIDTH WINT_WIDTH</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>对应类型的宽度,以位数表示<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><stdlib.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/strfromf&action=edit&redlink=1" class="new" title="c/experimental/fpext1/strfromf(页面不存在)"><span class="t-lines"><span>strfromd</span><span>strfromf</span><span>strfroml</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>用指定的 snprintf 格式转换单个浮点值到字符串<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><math.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>FP_INT_UPWARD</span><span>FP_INT_DOWNWARD</span><span>FP_INT_TOWARDZERO</span> <span>FP_INT_TONEARESTFROMZERO</span><span>FP_INT_TONEAREST</span><span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>函数 ceil 、 floor 、 trunc 、 round ,及 roundeven 的舍入方向,适用于 fromfp 系列函数<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>FP_LLOGB0</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>若参数为零则 <span class="t-lc">llogb</span> 所返回的值<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>FP_LLOGBNAN</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>若参数为 NaN 则 <span class="t-lc">llogb</span> 所返回的值<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/SNAN&action=edit&redlink=1" class="new" title="c/experimental/fpext1/SNAN(页面不存在)"><span class="t-lines"><span>SNANF</span><span>SNAN</span><span>SNANL</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>各表示 float 、 double 、 long double 的引发信号的 NaN<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>FP_FAST_FADD FP_FAST_FADDL FP_FAST_DADDL</span><span>FP_FAST_FSUB FP_FAST_FSUBL FP_FAST_DSUBL</span><span>FP_FAST_FMUL FP_FAST_FMULL FP_FAST_DMULL</span><span>FP_FAST_FDIV FP_FAST_FDIVL FP_FAST_DDIVL</span><span>FP_FAST_FFMA FP_FAST_FFMAL FP_FAST_DFMAL</span><span>FP_FAST_FSQRT FP_FAST_FSQRTL FP_FAST_DSQRTL</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>倘若定义,则指示对应的函数执行快于较大类型的等价函数后随到目标类型的转型<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>iseqsig</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><br />
|
||||
<span class="t-mark">(宏函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>iscanonical</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>测试浮点值是否规范<br />
|
||||
<span class="t-mark">(宏函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>issignaling</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>测试浮点值是否引发信号的 NaN<br />
|
||||
<span class="t-mark">(宏函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>issubnormal</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>测试浮点值是否非正规<br />
|
||||
<span class="t-mark">(宏函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>iszero</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>测试浮点值是否为零(正、符、无符号)<br />
|
||||
<span class="t-mark">(宏函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/fromfp&action=edit&redlink=1" class="new" title="c/experimental/fpext1/fromfp(页面不存在)"><span class="t-lines"><span>fromfp</span><span>fromfpf</span><span>fromfpl</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>用指定舍入方向舍入到有符号整数<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/ufromfp&action=edit&redlink=1" class="new" title="c/experimental/fpext1/ufromfp(页面不存在)"><span class="t-lines"><span>ufromfp</span><span>ufromfpf</span><span>ufromfpl</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>用指定舍入方向舍入到无符号整数<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/fromfpx&action=edit&redlink=1" class="new" title="c/experimental/fpext1/fromfpx(页面不存在)"><span class="t-lines"><span>fromfpx</span><span>fromfpxf</span><span>fromfpxl</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>用指定舍入方向舍入到有符号整数,报告不准确性<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/ufromfpx&action=edit&redlink=1" class="new" title="c/experimental/fpext1/ufromfpx(页面不存在)"><span class="t-lines"><span>ufromfpx</span><span>ufromfpxf</span><span>ufromfpxl</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>用指定舍入方向舍入到无符号整数,报告不准确性<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/roundeven&action=edit&redlink=1" class="new" title="c/experimental/fpext1/roundeven(页面不存在)"><span class="t-lines"><span>roundeven</span><span>roundevenf</span><span>roundevenl</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>舍入到最近值,中间点情况下舍入到偶数<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/llogb&action=edit&redlink=1" class="new" title="c/experimental/fpext1/llogb(页面不存在)"><span class="t-lines"><span>llogb</span><span>llogbf</span><span>llogbl</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>等价于 <span class="t-lc"><a href="c-numeric-math-logb.html">logb</a></span> ,除了返回类型是 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">long</span></span></span><br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/fmaxmag&action=edit&redlink=1" class="new" title="c/experimental/fpext1/fmaxmag(页面不存在)"><span class="t-lines"><span>fmaxmag</span><span>fmaxmagf</span><span>fmaxmagl</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>返回拥有较大绝对值的参数的值<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/fminmag&action=edit&redlink=1" class="new" title="c/experimental/fpext1/fminmag(页面不存在)"><span class="t-lines"><span>fminmag</span><span>fminmagf</span><span>fminmagl</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>返回拥有较小绝对值的参数的值<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/nextup&action=edit&redlink=1" class="new" title="c/experimental/fpext1/nextup(页面不存在)"><span class="t-lines"><span>nextup</span><span>nextupf</span><span>nextupl</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>返回下个较大的可表示浮点值<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/nextdown&action=edit&redlink=1" class="new" title="c/experimental/fpext1/nextdown(页面不存在)"><span class="t-lines"><span>nextdown</span><span>nextdownf</span><span>nextdownl</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>返回下个较小的可表示浮点值<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/fadd&action=edit&redlink=1" class="new" title="c/experimental/fpext1/fadd(页面不存在)"><span class="t-lines"><span>fadd</span><span>faddl</span><span>daddl</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>如同以无限精度并只舍入一次到目标类型计算 x+y<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/fsub&action=edit&redlink=1" class="new" title="c/experimental/fpext1/fsub(页面不存在)"><span class="t-lines"><span>fsub</span><span>fsubl</span><span>dsubl</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>如同以无限精度并只舍入一次到目标类型计算 x-y<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/fmul&action=edit&redlink=1" class="new" title="c/experimental/fpext1/fmul(页面不存在)"><span class="t-lines"><span>fmul</span><span>fmull</span><span>dmull</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>如同以无限精度并只舍入一次到目标类型计算 x*y<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/fdiv&action=edit&redlink=1" class="new" title="c/experimental/fpext1/fdiv(页面不存在)"><span class="t-lines"><span>fdiv</span><span>fdivl</span><span>ddivl</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>如同以无限精度并只舍入一次到目标类型计算 x/y<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/ffma&action=edit&redlink=1" class="new" title="c/experimental/fpext1/ffma(页面不存在)"><span class="t-lines"><span>ffma</span><span>ffmal</span><span>dfmal</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>如同以无限精度并只舍入一次到目标类型计算 <span class="t-lc"><a href="c-numeric-math-fma.html">fma</a></span><br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/fsqrt&action=edit&redlink=1" class="new" title="c/experimental/fpext1/fsqrt(页面不存在)"><span class="t-lines"><span>fsqrt</span><span>fsqrtl</span><span>dsqrtl</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>如同以无限精度并只舍入一次到目标类型计算 <span class="t-lc"><a href="c-numeric-math-sqrt.html">sqrt</a></span><br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/totalorder&action=edit&redlink=1" class="new" title="c/experimental/fpext1/totalorder(页面不存在)"><span class="t-lines"><span>totalorder</span><span>totalorderf</span><span>totalorderl</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>用 ISO 60559 全序关系排序二个浮点值<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/totalordermag&action=edit&redlink=1" class="new" title="c/experimental/fpext1/totalordermag(页面不存在)"><span class="t-lines"><span>totalordermag</span><span>totalordermagf</span><span>totalordermagl</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>用 ISO 60559 全序关系排序二个浮点值<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/canonicalize&action=edit&redlink=1" class="new" title="c/experimental/fpext1/canonicalize(页面不存在)"><span class="t-lines"><span>canonicalize</span><span>canonicalizef</span><span>canonicalizel</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>获得给定浮点值的 ISO 60559 规范二进制编码<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/getpayload&action=edit&redlink=1" class="new" title="c/experimental/fpext1/getpayload(页面不存在)"><span class="t-lines"><span>getpayload</span><span>getpayloadf</span><span>getpayloadl</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从给定的 NaN 值提取出负载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/setpayload&action=edit&redlink=1" class="new" title="c/experimental/fpext1/setpayload(页面不存在)"><span class="t-lines"><span>setpayload</span><span>setpayloadf</span><span>setpayloadl</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>以指定负载创建安静的 NaN<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext1/setpayloadsig&action=edit&redlink=1" class="new" title="c/experimental/fpext1/setpayloadsig(页面不存在)"><span class="t-lines"><span>setpayloadsig</span><span>setpayloadsigf</span><span>setpayloadsigl</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>以指定负载创建引发信号的 NaN<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><tgmath.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>roundeven</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">roundeven</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>llogb</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">llogb</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>fmaxmag</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">fmaxmag</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>fminmag</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">fminmag</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>nextup</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">nextup</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>nextdown</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">nextdown</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>fromfp</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">fromfp</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>ufromfp</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">ufromfp</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>fromfpx</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">fromfpx</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>ufromfpx</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">ufromfpx</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>nextdown</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">nextdown</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>totalorder</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">totalorder</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>totalordermag</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">totalordermag</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>fadd</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">fadd</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>dadd</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">dadd</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>fsub</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">fsub</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>dsub</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">dsub</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>fmul</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">fmul</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>dmul</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">dmul</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>fdiv</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">fdiv</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>ddiv</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">ddiv</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>ffma</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">ffma</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>dfma</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">dfma</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>fsqrt</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">fsqrt</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>dsqrt</span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext1-ts t-mark-ts">(FP 扩展1 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">dsqrt</span> 的泛型重载<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h3>
|
||||
<p>此技术规范弃用标准 C 宏 <span class="t-lc">__STDC_IEC_559__</span> 及 <span class="t-lc">__STDC_IEC_559_COMPLEX__</span> 。</p>
|
||||
<p>仅若在包含对应头文件前定义宏 <span class="t-c"><span class="mw-geshi c source-c">__STDC_WANT_IEC_60559_BFP_EXT__</span></span> ,才声明此扩展添加到 C 库的所有函数和宏。</p>
|
||||
<p>在对标准库的添加以外, ISO/IEC TS 18661-1:2014 做了一些对语言核心的改动,值得注意的是将浮点控制分割为静态(由新的 <span class="t-c"><span class="mw-geshi c source-c"><span class="co2">#pragma STDC FENV_ROUND</span></span></span> 控制)和动态(由 <span class="t-lc"><a href="c-numeric-fenv-feround.html">fesetround</a></span> 控制)。若设置了静态舍入模式,则大多数 math.h 的函数考虑静态舍入模式优先于动态舍入模式。</p>
|
||||
<table class="metadata plainlinks ambox mbox-small-left ambox-notice" style="">
|
||||
<tr>
|
||||
<td class="mbox-empty-cell"></td>
|
||||
<td class="mbox-text" style="">本节未完成<br />
|
||||
原因:添加到 pragma 页面或在此完整描述 pragma ?</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,881 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>浮点扩展部分 4 :补充函数</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_experimental_fpext4 skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">浮点扩展部分 4 :补充函数</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-experimental.html">experimental</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<p>C 浮点扩展 - 部分 4 :补充函数, ISO/IEC TS 18661-4:2015 ,为 C 标准库定义下列新组件,它们为 ISO/IEC/IEEE 60559:2011 ( IEEE-754 的当前版本)所推荐</p>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>__STDC_IEC_60559_FUNCS__</span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>拥有 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">long</span></span></span> 类型和值 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">201506L</span></span></span> 的整数常量<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><math.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/exp2m1&action=edit&redlink=1" class="new" title="c/experimental/fpext4/exp2m1(页面不存在)"><span class="t-lines"><span>exp2m1 exp2m1f exp2m1l</span><span>exp2m1fN exp2m1fNx</span><span>exp2m1dN exp2m1dNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算 <span class="texhtml" style="white-space: nowrap;">2<span class="t-su">x<br /></span>-1</span><br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/exp10&action=edit&redlink=1" class="new" title="c/experimental/fpext4/exp10(页面不存在)"><span class="t-lines"><span>exp10 exp10f exp10l</span><span>exp10fN exp10fNx</span><span>exp10dN exp10dNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算 <span class="texhtml" style="white-space: nowrap;">10<span class="t-su">x<br /></span></span><br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/exp10m1&action=edit&redlink=1" class="new" title="c/experimental/fpext4/exp10m1(页面不存在)"><span class="t-lines"><span>exp10m1 exp10m1f exp10m1l</span><span>exp10m1fN exp10m1fNx</span><span>exp10m1dN exp10m1dNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算 <span class="texhtml" style="white-space: nowrap;">10<span class="t-su">x<br /></span>-1</span><br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/logp1&action=edit&redlink=1" class="new" title="c/experimental/fpext4/logp1(页面不存在)"><span class="t-lines"><span>logp1 logp1f logp1l</span><span>logp1fN logp1fNx</span><span>logp1dN logp1dNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算 ln(1+x) (与 <span class="t-lc"><a href="c-numeric-math-log1p.html">log1p</a></span> 相同)<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/log2p1&action=edit&redlink=1" class="new" title="c/experimental/fpext4/log2p1(页面不存在)"><span class="t-lines"><span>log2p1 log2p1f log2p1l</span><span>log2p1fN log2p1fNx</span><span>log2p1dN log2p1dNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算 <span class="texhtml" style="white-space: nowrap;">log<span class="t-su t-su-b"><br />
|
||||
2</span>(1+x)</span><br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/log10p1&action=edit&redlink=1" class="new" title="c/experimental/fpext4/log10p1(页面不存在)"><span class="t-lines"><span>log10p1 log10p1f log10p1l</span><span>log10p1fN log10p1fNx</span><span>log10p1dN log10p1dNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算 <span class="texhtml" style="white-space: nowrap;">log<span class="t-su t-su-b"><br />
|
||||
10</span>(1+x)</span><br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/rsqrt&action=edit&redlink=1" class="new" title="c/experimental/fpext4/rsqrt(页面不存在)"><span class="t-lines"><span>rsqrt rsqrtf rsqrtl</span><span>rsqrtfN rsqrtfNx</span><span>rsqrtdN rsqrtdNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算平方根倒数 <span class="texhtml" style="white-space: nowrap;">x<span class="t-su">-1/2<br /></span></span><br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/compoundn&action=edit&redlink=1" class="new" title="c/experimental/fpext4/compoundn(页面不存在)"><span class="t-lines"><span>compoundn compoundnf compoundnl</span><span>compoundnfN compoundnfNx</span><span>compoundndN compoundndNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算复利 <span class="texhtml" style="white-space: nowrap;">(1+x)<span class="t-su">n<br /></span></span><br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/rootn&action=edit&redlink=1" class="new" title="c/experimental/fpext4/rootn(页面不存在)"><span class="t-lines"><span>rootn rootnf rootnl</span><span>rootnfN rootnfNx</span><span>rootndN rootndNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算 x 的 n 次方根 <span class="texhtml" style="white-space: nowrap;">x<span class="t-su">1/n<br /></span></span><br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/pown&action=edit&redlink=1" class="new" title="c/experimental/fpext4/pown(页面不存在)"><span class="t-lines"><span>pown pownf pownl</span><span>pownfN pownfNx</span><span>powndN powndNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算 x 的 n 次幂,其中 n 为整数<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/powr&action=edit&redlink=1" class="new" title="c/experimental/fpext4/powr(页面不存在)"><span class="t-lines"><span>powr powrf powrl</span><span>powrfN powrfNx</span><span>powrdN powrdNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算 x 的 y 次幂 <span class="texhtml" style="white-space: nowrap;">x<span class="t-su">y<br /></span></span><br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/acospi&action=edit&redlink=1" class="new" title="c/experimental/fpext4/acospi(页面不存在)"><span class="t-lines"><span>acospi acospif acospil</span><span>acospifN acospifNx</span><span>acospidN acospidNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算 arccos(x)/π (以半圆周为单位度量角)<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/asinpi&action=edit&redlink=1" class="new" title="c/experimental/fpext4/asinpi(页面不存在)"><span class="t-lines"><span>asinpi asinpif asinpil</span><span>asinpifN asinpifNx</span><span>asinpidN asinpidNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算 arcsin(x)/π (以半圆周为单位度量角)<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/atanpi&action=edit&redlink=1" class="new" title="c/experimental/fpext4/atanpi(页面不存在)"><span class="t-lines"><span>atanpi atanpif atanpil</span><span>atanpifN atanpifNx</span><span>atanpidN atanpidNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算 arctan(x)/π (以半圆周为单位度量角)<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/atan2pi&action=edit&redlink=1" class="new" title="c/experimental/fpext4/atan2pi(页面不存在)"><span class="t-lines"><span>atan2pi atan2pif atan2pil</span><span>atan2pifN atan2pifNx</span><span>atan2pidN atan2pidNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算 arctan(y/x)/π (以半圆周为单位度量角)<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/cospi&action=edit&redlink=1" class="new" title="c/experimental/fpext4/cospi(页面不存在)"><span class="t-lines"><span>cospi cospif cospil</span><span>cospifN cospifNx</span><span>cospidN cospidNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算 cos(πx) (以半圆周为单位度量角)<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/sinpi&action=edit&redlink=1" class="new" title="c/experimental/fpext4/sinpi(页面不存在)"><span class="t-lines"><span>sinpi sinpif sinpil</span><span>sinpifN sinpifNx</span><span>sinpidN sinpidNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算 sin(πx) (以半圆周为单位度量角)<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/tanpi&action=edit&redlink=1" class="new" title="c/experimental/fpext4/tanpi(页面不存在)"><span class="t-lines"><span>tanpi tanpif tanpil</span><span>tanpifN tanpifNx</span><span>tanpidN tanpidNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算 tan(πx) (以半圆周为单位度量角)<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/reduc_sum&action=edit&redlink=1" class="new" title="c/experimental/fpext4/reduc sum(页面不存在)"><span class="t-lines"><span>reduc_sum reduc_sumf reduc_suml</span><span>reduc_sumfN reduc_sumfNx</span><span>reduc_sumdN reduc_sumdNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算数组的 n 个元素之和<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/reduc_sumabs&action=edit&redlink=1" class="new" title="c/experimental/fpext4/reduc sumabs(页面不存在)"><span class="t-lines"><span>reduc_sumabs reduc_sumabsf reduc_sumabsl</span><span>reduc_sumabsfN reduc_sumabsfNx</span><span>reduc_sumabsdN reduc_sumabsdNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算数组的 n 个元素绝对值之和<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/reduc_sumsq&action=edit&redlink=1" class="new" title="c/experimental/fpext4/reduc sumsq(页面不存在)"><span class="t-lines"><span>reduc_sumsq reduc_sumsqf reduc_sumsql</span><span>reduc_sumsqfN reduc_sumsqfNx</span><span>reduc_sumsqdN reduc_sumsqdNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算数组的 n 个元素的平方和<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/reduc_sumprod&action=edit&redlink=1" class="new" title="c/experimental/fpext4/reduc sumprod(页面不存在)"><span class="t-lines"><span>reduc_sumprod reduc_sumprodf reduc_sumprodl</span><span>reduc_sumprodfN reduc_sumprodfNx</span><span>reduc_sumproddN reduc_sumproddNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算二个数组的各 n 个元素的点积<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/scaled_prod&action=edit&redlink=1" class="new" title="c/experimental/fpext4/scaled prod(页面不存在)"><span class="t-lines"><span>scaled_prod scaled_prodf scaled_prodl</span><span>scaled_prodfN scaled_prodfNx</span><span>scaled_proddN scaled_proddNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算数组 n 个元素的积,结果为有效数位值和大小指数<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/scaled_prodsum&action=edit&redlink=1" class="new" title="c/experimental/fpext4/scaled prodsum(页面不存在)"><span class="t-lines"><span>scaled_prodsum scaled_prodsumf scaled_prodsuml</span><span>scaled_prodsumfN scaled_prodsumfNx</span><span>scaled_prodsumdN scaled_prodsumdNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算二个数组 n 对元素逐对和的积,结果为有效数位值和大小指数<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=c/experimental/fpext4/scaled_proddiff&action=edit&redlink=1" class="new" title="c/experimental/fpext4/scaled proddiff(页面不存在)"><span class="t-lines"><span>scaled_proddiff scaled_proddifff scaled_proddiffl</span><span>scaled_proddifffN scaled_proddifffNx</span><span>scaled_proddiffdN scaled_proddiffdNx</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>计算二个数组 n 对元素逐对差的积,结果为有效数位值和大小指数<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crexp<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc"><a href="c-numeric-math-exp.html">exp</a></span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crexpm1<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc"><a href="c-numeric-math-expm1.html">expm1</a></span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crexp2<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc"><a href="c-numeric-math-exp2.html">exp2</a></span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crexp2m1<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">exp2m1</span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crexp10<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">exp10</span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crexp10m1<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">exp10m1</span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crlog<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc"><a href="c-numeric-math-log.html">log</a></span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crlog2<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">log2</span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crlog10<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc"><a href="c-numeric-math-log10.html">log10</a></span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crlog1p<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc"><a href="c-numeric-math-log1p.html">log1p</a></span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crlogp1<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">logp1</span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crlog2p1<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">log2p1</span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crlog10p1<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">log10p1</span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crrsqrt<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">rsqrt</span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crcompoundn<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">compoundn</span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crrootn<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">rootn</span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crpown<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">pown</span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crpow<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc"><a href="c-numeric-math-pow.html">pow</a></span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crpowr<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">powr</span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crsin<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc"><a href="c-numeric-math-sin.html">sin</a></span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crcos<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc"><a href="c-numeric-math-cos.html">cos</a></span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crtan<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc"><a href="c-numeric-math-tan.html">tan</a></span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crsinpi<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">sinpi</span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crcospi<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">cospi</span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crtanpi<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">tanpi</span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crasinpi<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">asinpi</span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>cracospi<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">acospi</span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>cracospi<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">acospi</span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>cratanpi<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">atanpi</span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>cratan2pi<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">atan2pi</span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crasin<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc"><a href="c-numeric-math-asin.html">asin</a></span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>cracos<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc"><a href="c-numeric-math-acos.html">acos</a></span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>cratan<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc"><a href="c-numeric-math-atan.html">atan</a></span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>cratan2<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc"><a href="c-numeric-math-atan2.html">atan2</a></span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crsinh<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc"><a href="c-numeric-math-sinh.html">sinh</a></span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crcosh<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc"><a href="c-numeric-math-cosh.html">cosh</a></span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crtanh<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc"><a href="c-numeric-math-tanh.html">tanh</a></span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crasinh<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc"><a href="c-numeric-math-asinh.html">asinh</a></span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>cracosh<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc"><a href="c-numeric-math-acosh.html">acosh</a></span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>cratanh<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc"><a href="c-numeric-math-atanh.html">atanh</a></span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crhypot<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc"><a href="c-numeric-math-hypot.html">hypot</a></span> 的准确舍入版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc-header">
|
||||
<td colspan="2">
|
||||
<div>定义于头文件 <code><complex.h></code></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>cexp2m1<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">exp2m1</span> 的复数版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>cexp10<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">exp10</span> 的复数版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>cexp10m1<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">exp10m1</span> 的复数版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>clogp1<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">logp1</span> 的复数版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>clog2p1<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">log2p1</span> 的复数版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>clog10p1<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">log10p1</span> 的复数版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crsqrt <span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">rsqrt</span> 的复数版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>ccompoundn <span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">compoundn</span> 的复数版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>crootn<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">rootn</span> 的复数版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>cpown <span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">pown</span> 的复数版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>cpowr<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">powr</span> 的复数版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>cacospi<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">acospi</span> 的复数版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>casinpi<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">asinpi</span> 的复数版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>catanpi<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">atanpi</span> 的复数版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>ccospi<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">cospi</span> 的复数版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>csinpi<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">sinpi</span> 的复数版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><span class="t-lines"><span>ctanpi<span class="t-mark">(可选)</span></span></span></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-fpext4-ts t-mark-ts">(FP 扩展4 TS)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td><span class="t-lc">tanpi</span> 的复数版本<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h3>
|
||||
<p>仅若在包含 math.h 前定义宏 <span class="t-c"><span class="mw-geshi c source-c">__STDC_WANT_IEC_60559_FUNCS_EXT__</span></span> ,才声明此扩展添加到 C 库的所有函数。</p>
|
||||
<p>仅若在包含 math.h 前定义宏 <span class="t-c"><span class="mw-geshi c source-c">__STDC_WANT_IEC_60559_DFP_EXT__</span></span> ,才定义每个函数的十进制浮点变体。</p>
|
||||
<p>仅若在包含 math.h 前定义宏 <span class="t-c"><span class="mw-geshi c source-c">__STDC_WANT_IEC_60559_TYPES_EXT__</span></span> ,才定义每个函数的扩展精度变体。</p>
|
||||
<p>所有函数的准确舍入版本(带 <span class="t-c"><span class="mw-geshi c source-c">cr<span class="sy2">-</span></span></span> 前缀者)都是可选的。</p>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,207 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>实验性 C 特性</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_experimental skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">实验性 C 特性</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<p>C 标准委员会为未来的标准化出版C语言及库的实验性扩展。</p>
|
||||
<p>注意:2012以前,此类出版使用 TR ( technical report ,技术报告)格式。自 2012 起 ISO 程序改用 TS ( technical specification ,技术规范)格式。</p>
|
||||
<table class="wikitable">
|
||||
<tr>
|
||||
<th>ISO 编号</th>
|
||||
<th>名称</th>
|
||||
<th>状态</th>
|
||||
<th>链接</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ISO/IEC TR
|
||||
<p>19769:2004</p>
|
||||
</td>
|
||||
<td>支持新字符类型的扩展</td>
|
||||
<td>出版( <a rel="nofollow" class="external text" href="https://www.iso.org/standard/33907.html">ISO 商店</a>)
|
||||
<p>最终草案: <a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1040.pdf">n1040</a> (2003-11-07)<br />
|
||||
<span style="font-size:21px;color:green"><b>✔</b></span>并入 C11 。</p>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ISO/IEC TR
|
||||
<p>24731-1:2007</p>
|
||||
</td>
|
||||
<td>边界检查接口</td>
|
||||
<td>出版( <a rel="nofollow" class="external text" href="https://www.iso.org/standard/38841.html">ISO 商店</a>)
|
||||
<p>最终草案: <a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1225.pdf">n1225</a> (2007-03-28)<br />
|
||||
<span style="font-size:21px;color:green"><b>✔</b></span>并入 C11 。</p>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ISO/IEC TR
|
||||
<p>18037:2008</p>
|
||||
</td>
|
||||
<td>支持嵌入式处理器的扩展</td>
|
||||
<td>出版( <a rel="nofollow" class="external text" href="https://www.iso.org/standard/51126.html">ISO 商店</a>)
|
||||
<p>最终草案:<a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/SC22/wg14/www/docs/n1169.pdf">n1169</a> (2006-04-04)</p>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ISO/IEC TR
|
||||
<p>24732:2009</p>
|
||||
</td>
|
||||
<td>支持十进制浮点算术的扩展</td>
|
||||
<td>出版( <a rel="nofollow" class="external text" href="https://www.iso.org/standard/38842.html">ISO 商店</a>)
|
||||
<p>最终草案: <a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1241.pdf">n1241</a> (2007-07-05)<br />
|
||||
为 TS 18661-2:2015 所代替</p>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ISO/IEC
|
||||
<p>24747:2009</p>
|
||||
</td>
|
||||
<td>支持特殊数学函数的扩展</td>
|
||||
<td>出版( <a rel="nofollow" class="external text" href="https://www.iso.org/standard/38857.html">ISO 商店</a>)
|
||||
<p>草案:<a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1182.pdf">n1182</a> (2006-08-02)</p>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ISO/IEC TR
|
||||
<p>24731-2:2010</p>
|
||||
</td>
|
||||
<td>支持动态分配函数的扩展</td>
|
||||
<td>出版于 2010-11-24 ( <a rel="nofollow" class="external text" href="https://www.iso.org/standard/51678.html">ISO 商店</a>)
|
||||
<p>草案: <a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1248.pdf">n1248</a> (2007-08-15)</p>
|
||||
</td>
|
||||
<td><a href="c-experimental-dynamic.html">dynamic</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ISO/IEC TS
|
||||
<p>17961:2013</p>
|
||||
</td>
|
||||
<td>安全编码规则</td>
|
||||
<td>出版于 2013-11-15 (<a rel="nofollow" class="external text" href="https://www.iso.org/standard/61134.html">ISO 商店</a>)
|
||||
<p>草案: <a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1624.pdf">n1624</a> (2012-06-26)<br />
|
||||
TC1 出版于 2016-08-09 ( <a rel="nofollow" class="external text" href="https://www.iso.org/standard/72086.html">ISO 商店</a>)</p>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ISO/IEC TS
|
||||
<p>18661-1:2014</p>
|
||||
</td>
|
||||
<td>浮点扩展:二进制浮点算术</td>
|
||||
<td>出版于 2014-07-21 ( <a rel="nofollow" class="external text" href="https://www.iso.org/standard/63146.html">ISO 商店</a>)
|
||||
<p>草案: <a rel="nofollow" class="external text" href="http://www.open-std.org/JTC1/sc22/wg14/www/docs/n1778.pdf">n1778</a> (2013-11-05)</p>
|
||||
<p>C2x 草案: <a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2314.pdf">n2314</a> (2018-11-12)</p>
|
||||
<p><span style="font-size:21px;color:green"><b>✔</b></span>并入 C23 。</p>
|
||||
</td>
|
||||
<td><a href="c-experimental-fpext1.html">fpext1</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ISO/IEC TS
|
||||
<p>18661-2:2015</p>
|
||||
</td>
|
||||
<td>浮点扩展:十进制浮点算术</td>
|
||||
<td>出版于 2015-02-11 ,修订于 2015-05-18 ( <a rel="nofollow" class="external text" href="https://www.iso.org/standard/68882.html">ISO 商店</a>)
|
||||
<p>C2x 草案: <a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2341.pdf">n2341</a> (2019-02-26)</p>
|
||||
<p><span style="font-size:21px;color:green"><b>✔</b></span>并入 C23 。</p>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ISO/IEC TS
|
||||
<p>18661-3:2015</p>
|
||||
</td>
|
||||
<td>浮点扩展:交流及扩展类型</td>
|
||||
<td>出版于 2015-10-06 ( <a rel="nofollow" class="external text" href="https://www.iso.org/standard/65615.html">ISO ISO 商店</a>)。草案: <a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1945.pdf">n1945</a> (2015-06-10) 。
|
||||
<p>C2x 草案: <a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2601.pdf">n2601</a> (2020-10-15)</p>
|
||||
<p><span style="font-size:21px;color:green"><b>✔</b></span>并入 C23 。</p>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ISO/IEC TS
|
||||
<p>18661-4:2015</p>
|
||||
</td>
|
||||
<td>浮点扩展:补充函数</td>
|
||||
<td>出版于 2015-10-06 ( <a rel="nofollow" class="external text" href="https://www.iso.org/standard/65616.html">ISO 商店</a>)。草案: <a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1950.pdf">n1950</a> (2015-06-10) 。
|
||||
<p>C2x 草案: <a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2401.pdf">n2401</a> (2019-06-23)</p>
|
||||
<p><span style="font-size:21px;color:green"><b>✔</b></span>部分并入 C23 。</p>
|
||||
</td>
|
||||
<td><a href="c-experimental-fpext4.html">fpext4</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ISO/IEC TS
|
||||
<p>18661-5:2016</p>
|
||||
</td>
|
||||
<td>浮点扩展:补充属性</td>
|
||||
<td>出版于 2016-08-11 ( <a rel="nofollow" class="external text" href="https://www.iso.org/standard/65617.html">ISO 商店</a>)
|
||||
<p>草案: <a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2004.pdf">n2004</a> (2016-03-07)</p>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ISO/IEC TR
|
||||
<p>24772-3:2020</p>
|
||||
</td>
|
||||
<td>编程语言 C 的脆弱性描述</td>
|
||||
<td>出版于 2020-05-20 ( <a rel="nofollow" class="external text" href="https://www.iso.org/standard/71093.html">ISO 商店</a>)。草案: <a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2169.pdf">n2169</a> (2017-04-07)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>事务性内存 TS</td>
|
||||
<td>早期草案: <a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1961.pdf">n1961</a> (2015-09-23)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ISO/IEC TS
|
||||
<p>17961:xxxx</p>
|
||||
</td>
|
||||
<td>安全编码规则部分 2</td>
|
||||
<td>早期开发,预计发布于 2023 ,可能作为 IS 而非 TS</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ISO/IEC AWI TS 6010</td>
|
||||
<td>C 的具备来源的内存对象模型</td>
|
||||
<td>早期草案: <a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2676.pdf">n2676</a> (2021-03-24)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ISO/IEC TS
|
||||
<p>21938-1</p>
|
||||
</td>
|
||||
<td>并行扩展部分 1 :基于线程的并行</td>
|
||||
<td>早期草案: <a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2170.pdf">n2170</a> (2017-09-21)<br />
|
||||
<span style="font-size:21px;color:red"><b>×</b></span>(废弃)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>并行扩展部分 2 :基于向量的并行</td>
|
||||
<td>早期部分草案: <a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2081.htm">n2081</a> (2016-09-15)<br />
|
||||
<span style="font-size:21px;color:red"><b>×</b></span>(废弃)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin"></table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,192 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>C 标准库头文件</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_header skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">C 标准库头文件</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<p>C 标准库的接口由下列头文件的汇集定义。</p>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><assert.h></b></code></td>
|
||||
<td><a href="c-error.html">条件编译宏,将参数与零比较</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><complex.h></b></code> <span class="t-mark-rev t-since-c99">(C99)</span></td>
|
||||
<td><a href="c-numeric-complex.html">复数运算</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><ctype.h></b></code></td>
|
||||
<td><a href="c-string-byte.html">用来确定包含于字符数据中的类型的函数</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><errno.h></b></code></td>
|
||||
<td><a href="c-error.html">报告错误条件的宏</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><fenv.h></b></code> <span class="t-mark-rev t-since-c99">(C99)</span></td>
|
||||
<td><a href="c-numeric-fenv.html">浮点环境</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><float.h></b></code></td>
|
||||
<td><a href="c-types-limits.html">浮点类型的极限</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><inttypes.h></b></code> <span class="t-mark-rev t-since-c99">(C99)</span></td>
|
||||
<td><a href="c-types-integer.html">整数类型的格式转换</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><iso646.h></b></code> <span class="t-mark-rev t-since-c95">(C95)</span></td>
|
||||
<td><a href="c-language-operator_alternative.html">运算符的替代写法</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><limits.h></b></code></td>
|
||||
<td><a href="c-types-limits.html">整数类型的范围</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><locale.h></b></code></td>
|
||||
<td><a href="c-locale.html">本地化工具</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><math.h></b></code></td>
|
||||
<td><a href="c-numeric-math.html">常用数学函数</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><setjmp.h></b></code></td>
|
||||
<td><a href="c-program.html">非局部跳转</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><signal.h></b></code></td>
|
||||
<td><a href="c-program.html">信号处理</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><stdalign.h></b></code> <span class="t-mark-rev t-since-c11">(C11)</span></td>
|
||||
<td><a href="c-types.html"><code>alignas</code> 与 <code>alignof</code></a> 便利宏</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><stdarg.h></b></code></td>
|
||||
<td><a href="c-variadic.html">可变参数</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><stdatomic.h></b></code> <span class="t-mark-rev t-since-c11">(C11)</span></td>
|
||||
<td><a href="c-atomic.html">原子类型</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><stdbool.h></b></code> <span class="t-mark-rev t-since-c99">(C99)</span></td>
|
||||
<td><a href="c-types.html">布尔类型的宏</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><stddef.h></b></code></td>
|
||||
<td><a href="c-types.html">常用宏定义</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><stdint.h></b></code> <span class="t-mark-rev t-since-c99">(C99)</span></td>
|
||||
<td><a href="c-types-integer.html">定宽整数类型</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><stdio.h></b></code></td>
|
||||
<td><a href="c-io.html">输入/输出</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><stdlib.h></b></code></td>
|
||||
<td>基础工具:<a href="c-memory.html">内存管理</a>、<a href="c-program.html">程序工具</a>、<a href="c-string.html">字符串转换</a>、<a href="c-numeric-random.html">随机数</a>、<a href="c-algorithm.html">算法</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><stdnoreturn.h></b></code> <span class="t-mark-rev t-since-c11">(C11)</span></td>
|
||||
<td><a href="c-types.html"><tt>noreturn</tt></a> 便利宏</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><string.h></b></code></td>
|
||||
<td><a href="c-string-byte.html">字符串处理</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><tgmath.h></b></code> <span class="t-mark-rev t-since-c99">(C99)</span></td>
|
||||
<td><a href="c-numeric-tgmath.html">泛型数学</a>(包装 math.h 和 complex.h 的宏)</td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><threads.h></b></code> <span class="t-mark-rev t-since-c11">(C11)</span></td>
|
||||
<td><a href="c-thread.html">线程库</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><time.h></b></code></td>
|
||||
<td><a href="c-chrono.html">时间/日期工具</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><uchar.h></b></code> <span class="t-mark-rev t-since-c11">(C11)</span></td>
|
||||
<td><a href="c-string-multibyte.html">UTF-16 和 UTF-32 字符工具</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><wchar.h></b></code> <span class="t-mark-rev t-since-c95">(C95)</span></td>
|
||||
<td><a href="c-string-wide.html">扩展多字节和宽字符工具</a></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td><code><b><wctype.h></b></code> <span class="t-mark-rev t-since-c95">(C95)</span></td>
|
||||
<td><a href="c-string-wide.html">用来确定包含于宽字符数据中的类型的函数</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-17">
|
||||
<ul>
|
||||
<li>C17 标准(ISO/IEC 9899:2018):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.1.2 Standard headers (p: 131-132)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.1.2 Standard headers (p: 181-182)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.1.2 Standard headers (p: 165)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.1.2 Standard headers</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin"></table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,159 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>clearerr</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_clearerr skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">clearerr</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">void</span> clearerr<span class="br0">(</span> <a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>重置给定文件流的错误标志和 <code>EOF</code> 指示器。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>要重置错误标志的文件流</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>(无)</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
<span class="co2">#include <assert.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-io.html"><span class="kw883">FILE</span></a><span class="sy2">*</span> tmpf <span class="sy1">=</span> <a href="c-io-tmpfile.html"><span class="kw881">tmpfile</span></a><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fputs.html"><span class="kw832">fputs</span></a><span class="br0">(</span><span class="st0">"abcde<span class="es1">\n</span>"</span>, tmpf<span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-rewind.html"><span class="kw875">rewind</span></a><span class="br0">(</span>tmpf<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw4">int</span> ch<span class="sy4">;</span>
|
||||
<span class="kw1">while</span> <span class="br0">(</span><span class="br0">(</span>ch<span class="sy1">=</span><a href="c-io-fgetc.html"><span class="kw827">fgetc</span></a><span class="br0">(</span>tmpf<span class="br0">)</span><span class="br0">)</span> <span class="sy3">!</span><span class="sy1">=</span> <a href="c-io.html"><span class="kw888">EOF</span></a><span class="br0">)</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"%c"</span>, ch<span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-error-assert.html"><span class="kw407">assert</span></a><span class="br0">(</span><a href="c-io-feof.html"><span class="kw876">feof</span></a><span class="br0">(</span>tmpf<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// 此循环期待以 eof 终止</span>
|
||||
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">"End of file reached"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
clearerr<span class="br0">(</span>tmpf<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// 清除 eof</span>
|
||||
|
||||
<span class="kw1">if</span> <span class="br0">(</span><a href="c-io-feof.html"><span class="kw876">feof</span></a><span class="br0">(</span>tmpf<span class="br0">)</span><span class="br0">)</span>
|
||||
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">"EOF indicator set"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">else</span>
|
||||
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">"EOF indicator cleared<span class="es1">\n</span>"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">abcde
|
||||
End of file reached
|
||||
EOF indicator cleared</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.10.1 The clearerr function (p: 338)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.10.1 The clearerr function (p: 304)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.10.1 The clearerr function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-feof.html"><span class="t-lines"><span>feof</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>检查文件结尾<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-perror.html"><span class="t-lines"><span>perror</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>显示对应当前错误的字符串到 <span class="t-lc"><a href="c-io.html">stderr</a></span><br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-ferror.html"><span class="t-lines"><span>ferror</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>检查文件错误<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,148 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>fclose</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_fclose skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">fclose</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> fclose<span class="br0">(</span> <a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>关闭给定的文件流。冲入任何未写入的缓冲数据到 OS 。舍弃任何未读取的缓冲数据。</p>
|
||||
<p>无论操作是否成功,流都不再关联到文件,且由 <span class="t-lc"><a href="c-io-setbuf.html">setbuf</a></span> 或 <span class="t-lc"><a href="c-io-setvbuf.html">setvbuf</a></span> 分配的缓冲区若存在,则亦被解除关联,并且若使用自动分配则被解分配。</p>
|
||||
<p>若在 <code>fclose</code> 返回后使用指针 <code>stream</code> 的值则行为未定义。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>需要关闭的文件流</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>成功时为 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> ,否则为 <span class="t-lc"><a href="c-io.html">EOF</a></span> 。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-io.html"><span class="kw883">FILE</span></a><span class="sy2">*</span> fp <span class="sy1">=</span> <a href="c-io-fopen.html"><span class="kw819">fopen</span></a><span class="br0">(</span><span class="st0">"test.txt"</span>, <span class="st0">"r"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">if</span><span class="br0">(</span><span class="sy3">!</span>fp<span class="br0">)</span> <span class="br0">{</span>
|
||||
<a href="c-io-perror.html"><span class="kw878">perror</span></a><span class="br0">(</span><span class="st0">"File opening failed"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">return</span> <a href="c-program-EXIT_status.html"><span class="kw494">EXIT_FAILURE</span></a><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
|
||||
<span class="kw4">int</span> c<span class="sy4">;</span> <span class="co1">// 注意:int,非char,要求处理EOF</span>
|
||||
<span class="kw1">while</span> <span class="br0">(</span><span class="br0">(</span>c <span class="sy1">=</span> <a href="c-io-fgetc.html"><span class="kw826">fgetc</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="br0">)</span> <span class="sy3">!</span><span class="sy1">=</span> <a href="c-io.html"><span class="kw888">EOF</span></a><span class="br0">)</span> <span class="br0">{</span> <span class="co1">// 标准C I/O读取文件循环</span>
|
||||
<a href="c-io-putchar.html"><span class="kw834">putchar</span></a><span class="br0">(</span>c<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
|
||||
<span class="kw1">if</span> <span class="br0">(</span><a href="c-io-ferror.html"><span class="kw877">ferror</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="br0">)</span>
|
||||
<a href="c-io-puts.html"><span class="kw835">puts</span></a><span class="br0">(</span><span class="st0">"I/O error when reading"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span><a href="c-io-feof.html"><span class="kw876">feof</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="br0">)</span>
|
||||
<a href="c-io-puts.html"><span class="kw835">puts</span></a><span class="br0">(</span><span class="st0">"End of file reached successfully"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
fclose<span class="br0">(</span>fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.5.1 The fclose function (p: 304)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.5.1 The fclose function (p: 270)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.5.1 The fclose function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fopen.html"><span class="t-lines"><span>fopen</span><span>fopen_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>打开文件<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-freopen.html"><span class="t-lines"><span>freopen</span><span>freopen_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>以不同名称打开既存的文件流<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,156 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>feof</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_feof skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">feof</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> feof<span class="br0">(</span> <a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>检查是否已抵达给定文件流的结尾。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>要检验的文件流</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>若已抵达流尾则为非零值,否则为 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span></p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h3>
|
||||
<p>此函数仅报告最近一次 I/O 操作所报告的流状态,而不检验关联的数据源。例如,若最近一次 I/O 是抵达文件最后字节的 <span class="t-lc"><a href="c-io-fgetc.html">fgetc</a></span> ,则 <code>feof</code> 返回零。下个 <span class="t-lc"><a href="c-io-fgetc.html">fgetc</a></span> 失败并更改流状态为<i>文件尾</i>。然后 <code>feof</code> 才返回非零。</p>
|
||||
<p>典型用法中,输入流处理在任何错误时停止;而 <code>feof</code> 和 <span class="t-lc"><a href="c-io-ferror.html">ferror</a></span> 用于区别不同错误条件。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-io.html"><span class="kw883">FILE</span></a><span class="sy2">*</span> fp <span class="sy1">=</span> <a href="c-io-fopen.html"><span class="kw819">fopen</span></a><span class="br0">(</span><span class="st0">"test.txt"</span>, <span class="st0">"r"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">if</span><span class="br0">(</span><span class="sy3">!</span>fp<span class="br0">)</span> <span class="br0">{</span>
|
||||
<a href="c-io-perror.html"><span class="kw878">perror</span></a><span class="br0">(</span><span class="st0">"File opening failed"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">return</span> <a href="c-program-EXIT_status.html"><span class="kw494">EXIT_FAILURE</span></a><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
|
||||
<span class="kw4">int</span> c<span class="sy4">;</span> <span class="co1">// 注意:int,非char,要求处理EOF</span>
|
||||
<span class="kw1">while</span> <span class="br0">(</span><span class="br0">(</span>c <span class="sy1">=</span> <a href="c-io-fgetc.html"><span class="kw827">fgetc</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="br0">)</span> <span class="sy3">!</span><span class="sy1">=</span> <a href="c-io.html"><span class="kw888">EOF</span></a><span class="br0">)</span> <span class="br0">{</span> <span class="co1">// 标准C I/O读取文件循环</span>
|
||||
<a href="c-io-putchar.html"><span class="kw835">putchar</span></a><span class="br0">(</span>c<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
|
||||
<span class="kw1">if</span> <span class="br0">(</span><a href="c-io-ferror.html"><span class="kw877">ferror</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="br0">)</span>
|
||||
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">"I/O error when reading"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span>feof<span class="br0">(</span>fp<span class="br0">)</span><span class="br0">)</span>
|
||||
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">"End of file reached successfully"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<a href="c-io-fclose.html"><span class="kw822">fclose</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.10.2 The feof function (p: 339)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.10.2 The feof function (p: 305)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.10.2 The feof function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-clearerr.html"><span class="t-lines"><span>clearerr</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>清除错误<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-perror.html"><span class="t-lines"><span>perror</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>显示对应当前错误的字符串到 <span class="t-lc"><a href="c-io.html">stderr</a></span><br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-ferror.html"><span class="t-lines"><span>ferror</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>检查文件错误<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,158 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>ferror</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_ferror skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">ferror</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> ferror<span class="br0">(</span> <a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>检查给定文件流的错误。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>要检查的文件流</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>若文件流已出现错误则为非零值,否则为 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span></p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
<span class="co2">#include <locale.h></span>
|
||||
<span class="co2">#include <wchar.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw4">char</span><span class="sy2">*</span> fname <span class="sy1">=</span> <a href="c-io-tmpnam.html"><span class="kw882">tmpnam</span></a><span class="br0">(</span><a href="c-types-NULL.html"><span class="kw103">NULL</span></a><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io.html"><span class="kw883">FILE</span></a><span class="sy2">*</span> f <span class="sy1">=</span> <a href="c-io-fopen.html"><span class="kw819">fopen</span></a><span class="br0">(</span>fname, <span class="st0">"wb"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fputs.html"><span class="kw832">fputs</span></a><span class="br0">(</span><span class="st0">"<span class="es2">\xff</span><span class="es2">\xff</span><span class="es1">\n</span>"</span>, f<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// 不是合法的 UTF-8 序列</span>
|
||||
<a href="c-io-fclose.html"><span class="kw822">fclose</span></a><span class="br0">(</span>f<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<a href="c-locale-setlocale.html"><span class="kw900">setlocale</span></a><span class="br0">(</span><a href="c-locale-LC_categories.html"><span class="kw903">LC_ALL</span></a>, <span class="st0">"en_US.utf8"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
f <span class="sy1">=</span> <a href="c-io-fopen.html"><span class="kw819">fopen</span></a><span class="br0">(</span>fname, <span class="st0">"rb"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
wint_t ch<span class="sy4">;</span>
|
||||
<span class="kw1">while</span> <span class="br0">(</span><span class="br0">(</span>ch<span class="sy1">=</span><a href="c-io-fgetwc.html"><span class="kw838">fgetwc</span></a><span class="br0">(</span>f<span class="br0">)</span><span class="br0">)</span> <span class="sy3">!</span><span class="sy1">=</span> WEOF<span class="br0">)</span> <span class="co1">// 试图读作 UTF-8 而失败</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"%#x "</span>, ch<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw1">if</span> <span class="br0">(</span><a href="c-io-feof.html"><span class="kw877">feof</span></a><span class="br0">(</span>f<span class="br0">)</span><span class="br0">)</span>
|
||||
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">"EOF indicator set"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">if</span> <span class="br0">(</span>ferror<span class="br0">(</span>f<span class="br0">)</span><span class="br0">)</span>
|
||||
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">"Error indicator set"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">Error indicator set</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.10.3 The ferror function (p: 339)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.10.3 The ferror function (p: 305)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.10.3 The ferror function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-clearerr.html"><span class="t-lines"><span>clearerr</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>清除错误<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-feof.html"><span class="t-lines"><span>feof</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>检查文件结尾<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-perror.html"><span class="t-lines"><span>perror</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>显示对应当前错误的字符串到 <span class="t-lc"><a href="c-io.html">stderr</a></span><br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,120 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>fflush</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_fflush skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">fflush</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> fflush<span class="br0">(</span> <a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>对于输出流(及最后操作为输出的更新流),从 <code>stream</code> 的缓冲区写入未写的数据到关联的输出设备。</p>
|
||||
<p>对于输入流(及最后操作为输入的更新流),行为未定义。</p>
|
||||
<p>若 <code>stream</code> 是空指针,则冲入所有输出流,包括操作于库包内者,或在其他情况下程序无法直接访问者。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>要写出的文件流</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>成功时返回零。否则返回 <span class="t-lc"><a href="c-io.html">EOF</a></span> 并设置文件流的错误指示器。</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h3>
|
||||
<p>POSIX通过定义<code>fflush</code>对输入流的效果<a rel="nofollow" class="external text" href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/fflush.html">扩展它的规定</a>,只要该流还表示一个文件或另一个可定位设备:该情况下重寻位 POSIX 文件指针以匹配 C 流指针(这有效地撤销任何读缓冲),并舍弃任何尚未回读的 <span class="t-lc"><a href="c-io-ungetc.html">ungetc</a></span> 或 <span class="t-lc"><a href="c-io-ungetwc.html">ungetwc</a></span> 的效果。</p>
|
||||
<p>微软(Microsoft)也通过定义<code>fflush</code>对输入流的效果扩展它的规定:在Visual Studio 2013及以前的版本中, <a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2013/9yky46tz(v=vs.120)">放弃输入缓冲区</a>;在Visual Studio 2015及以后的版本中,<a rel="nofollow" class="external text" href="https://msdn.microsoft.com/en-us/library/9yky46tz.aspx">无影响并保留缓冲区</a>.</p>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.5.2 The fflush function (p: 305)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.5.2 The fflush function (p: 270-271)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.5.2 The fflush function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fopen.html"><span class="t-lines"><span>fopen</span><span>fopen_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>打开文件<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fclose.html"><span class="t-lines"><span>fclose</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>关闭文件<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,212 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>fgetc, getc</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_fgetc skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">fgetc, getc</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> fgetc<span class="br0">(</span> <a href="c-io.html"><span class="kw882">FILE</span></a> <span class="sy2">*</span>stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(1)</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> getc<span class="br0">(</span> <a href="c-io.html"><span class="kw882">FILE</span></a> <span class="sy2">*</span>stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(2)</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 从给定的输入流读取下一个字符。</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 同 <code>fgetc</code> ,除了若 <code>getc</code> 实现为宏,则它可能求值 stream 多于一次,所以实参始终不应为带有副作用的表达式。</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>读取字符的来源</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>成功时为作为 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">unsigned</span> <span class="kw4">char</span></span></span> 获得并转换为 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">int</span></span></span> 的字符,失败时为 <span class="t-lc"><a href="c-io.html">EOF</a></span> 。</p>
|
||||
<p>若文件尾条件导致失败,则另外设置 <code>stream</code> 上的<i>文件尾</i>指示器(见 <span class="t-lc"><a href="c-io-feof.html">feof()</a></span> )。若某些其他错误导致失败,则设置 <code>stream</code> 上的<i>错误</i>指示器(见 <span class="t-lc"><a href="c-io-ferror.html">ferror()</a></span> )。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-io.html"><span class="kw882">FILE</span></a><span class="sy2">*</span> fp <span class="sy1">=</span> <a href="c-io-fopen.html"><span class="kw819">fopen</span></a><span class="br0">(</span><span class="st0">"test.txt"</span>, <span class="st0">"r"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">if</span><span class="br0">(</span><span class="sy3">!</span>fp<span class="br0">)</span> <span class="br0">{</span>
|
||||
<a href="c-io-perror.html"><span class="kw877">perror</span></a><span class="br0">(</span><span class="st0">"File opening failed"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">return</span> <a href="c-program-EXIT_status.html"><span class="kw494">EXIT_FAILURE</span></a><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
|
||||
<span class="kw4">int</span> c<span class="sy4">;</span> <span class="co1">// 注意:int,非char,要求处理EOF</span>
|
||||
<span class="kw1">while</span> <span class="br0">(</span><span class="br0">(</span>c <span class="sy1">=</span> fgetc<span class="br0">(</span>fp<span class="br0">)</span><span class="br0">)</span> <span class="sy3">!</span><span class="sy1">=</span> <a href="c-io.html"><span class="kw887">EOF</span></a><span class="br0">)</span> <span class="br0">{</span> <span class="co1">// 标准C I/O读取文件循环</span>
|
||||
<a href="c-io-putchar.html"><span class="kw833">putchar</span></a><span class="br0">(</span>c<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
|
||||
<span class="kw1">if</span> <span class="br0">(</span><a href="c-io-ferror.html"><span class="kw876">ferror</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="br0">)</span>
|
||||
<a href="c-io-puts.html"><span class="kw834">puts</span></a><span class="br0">(</span><span class="st0">"I/O error when reading"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span><a href="c-io-feof.html"><span class="kw875">feof</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="br0">)</span>
|
||||
<a href="c-io-puts.html"><span class="kw834">puts</span></a><span class="br0">(</span><span class="st0">"End of file reached successfully"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<a href="c-io-fclose.html"><span class="kw822">fclose</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-17">
|
||||
<ul>
|
||||
<li>C17 标准(ISO/IEC 9899:2018):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.7.1 The fgetc function (p: 240-241)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.7.5 The getc function (p: 242)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.7.1 The fgetc function (p: 330)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.7.5 The getc function (p: 332)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.7.1 The fgetc function (p: 296)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.7.5 The getc function (p: 297-298)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.7.1 The fgetc function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.7.5 The getc function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-getchar.html"><span class="t-lines"><span>getchar</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从 <span class="t-lc"><a href="c-io.html">stdin</a></span> 读取一个字符<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-gets.html"><span class="t-lines"><span>gets</span><span>gets_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-until-c11">(C11 中移除)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从 <code>stdin</code> 读取一个字符串<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fputc.html"><span class="t-lines"><span>fputc</span><span>putc</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将一个字符写入文件流<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-ungetc.html"><span class="t-lines"><span>ungetc</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将一个字符送回文件流<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,185 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>fgetpos</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_fgetpos skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">fgetpos</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody class="t-dcl-rev">
|
||||
<tr class="t-dcl t-until-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> fgetpos<span class="br0">(</span> <a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>stream, <a href="c-io.html"><span class="kw884">fpos_t</span></a> <span class="sy2">*</span>pos <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-until-c99">(C99 前)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> fgetpos<span class="br0">(</span> <a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span><span class="kw4">restrict</span> stream, <a href="c-io.html"><span class="kw884">fpos_t</span></a> <span class="sy2">*</span><span class="kw4">restrict</span> pos <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>获得文件流 <code>stream</code> 的文件位置指示器和当前分析状态(若存在),并将它们存储于 <code>pos</code> 所指向的对象。存储的值仅在作为 <span class="t-lc"><a href="c-io-fsetpos.html">fsetpos</a></span> 的输入的情况有意义。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>要检验的文件流</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>pos</td>
|
||||
<td>-</td>
|
||||
<td>指向要存储文件位置指示器到的 <span class="t-c"><span class="mw-geshi c source-c"><a href="c-io.html"><span class="kw884">fpos_t</span></a></span></span> 对象的指针</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>成功时为 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> ,否则非零值。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
<span class="co2">#include <assert.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="co1">// 准备保有 4 个 double 类型值的文件</span>
|
||||
<span class="kw2">enum</span> <span class="br0">{</span>SIZE <span class="sy1">=</span> <span class="nu0">4</span><span class="br0">}</span><span class="sy4">;</span>
|
||||
<a href="c-io.html"><span class="kw883">FILE</span></a><span class="sy2">*</span> fp <span class="sy1">=</span> <a href="c-io-fopen.html"><span class="kw819">fopen</span></a><span class="br0">(</span><span class="st0">"test.bin"</span>, <span class="st0">"wb"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-error-assert.html"><span class="kw407">assert</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw4">int</span> rc <span class="sy1">=</span> <a href="c-io-fwrite.html"><span class="kw826">fwrite</span></a><span class="br0">(</span><span class="br0">(</span><span class="kw4">double</span><span class="br0">[</span>SIZE<span class="br0">]</span><span class="br0">)</span><span class="br0">{</span><span class="nu16">1.1</span>, <span class="nu16">2.2</span>, <span class="nu16">3.3</span>, <span class="nu16">4.4</span><span class="br0">}</span>, <span class="kw4">sizeof</span><span class="br0">(</span><span class="kw4">double</span><span class="br0">)</span>, SIZE, fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-error-assert.html"><span class="kw407">assert</span></a><span class="br0">(</span>rc <span class="sy1">==</span> SIZE<span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fclose.html"><span class="kw822">fclose</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="co1">// 演示使用 fsetpos 返回到文件起始</span>
|
||||
fp <span class="sy1">=</span> <a href="c-io-fopen.html"><span class="kw819">fopen</span></a><span class="br0">(</span><span class="st0">"test.bin"</span>, <span class="st0">"rb"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io.html"><span class="kw884">fpos_t</span></a> pos<span class="sy4">;</span>
|
||||
fgetpos<span class="br0">(</span>fp, <span class="sy3">&</span>pos<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// 存储文件起始于 pos</span>
|
||||
<span class="kw4">double</span> d<span class="sy4">;</span>
|
||||
rc <span class="sy1">=</span> <a href="c-io-fread.html"><span class="kw825">fread</span></a><span class="br0">(</span><span class="sy3">&</span>d, <span class="kw4">sizeof</span> d, <span class="nu0">1</span>, fp<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// 读取首个 double</span>
|
||||
<a href="c-error-assert.html"><span class="kw407">assert</span></a><span class="br0">(</span>rc <span class="sy1">==</span> <span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"First value in the file: %.1f<span class="es1">\n</span>"</span>, d<span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fsetpos.html"><span class="kw873">fsetpos</span></a><span class="br0">(</span>fp,<span class="sy3">&</span>pos<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// 移动文件位置回文件起始</span>
|
||||
rc <span class="sy1">=</span> <a href="c-io-fread.html"><span class="kw825">fread</span></a><span class="br0">(</span><span class="sy3">&</span>d, <span class="kw4">sizeof</span> d, <span class="nu0">1</span>, fp<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// 再次读取首个 double</span>
|
||||
<a href="c-error-assert.html"><span class="kw407">assert</span></a><span class="br0">(</span>rc <span class="sy1">==</span> <span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"First value in the file again: %.1f<span class="es1">\n</span>"</span>, d<span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fclose.html"><span class="kw822">fclose</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="co1">// 演示错误处理</span>
|
||||
rc <span class="sy1">=</span> <a href="c-io-fsetpos.html"><span class="kw873">fsetpos</span></a><span class="br0">(</span><a href="c-io.html"><span class="kw885">stdin</span></a>, <span class="sy3">&</span>pos<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">if</span><span class="br0">(</span>rc<span class="br0">)</span> <a href="c-io-perror.html"><span class="kw878">perror</span></a><span class="br0">(</span><span class="st0">"could not fsetpos stdin"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">First value in the file: 1.1
|
||||
First value in the file again: 1.1
|
||||
could not fsetpos stdin: Illegal seek</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.9.1 The fgetpos function (p: 336)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.9.1 The fgetpos function (p: 302)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.9.1 The fgetpos function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-ftell.html"><span class="t-lines"><span>ftell</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>返回当前的文件位置指示值<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fseek.html"><span class="t-lines"><span>fseek</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将文件位置指示符移动到文件中的指定位置<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fsetpos.html"><span class="t-lines"><span>fsetpos</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将文件位置指示器移动到文件中的指定位置<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,214 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>fgets</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_fgets skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">fgets</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody class="t-dcl-rev">
|
||||
<tr class="t-dcl t-until-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">char</span> <span class="sy2">*</span>fgets<span class="br0">(</span> <span class="kw4">char</span> <span class="sy2">*</span>str, <span class="kw4">int</span> count, <a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-until-c99">(C99 前)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">char</span> <span class="sy2">*</span>fgets<span class="br0">(</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> str, <span class="kw4">int</span> count, <a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span><span class="kw4">restrict</span> stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>从给定文件流读取最多 <span class="t-c"><span class="mw-geshi c source-c">count <span class="sy2">-</span> <span class="nu0">1</span></span></span> 个字符并将它们存储于 <code>str</code> 所指向的字符数组。若文件尾出现或发现换行符则终止分析,后一情况下 <code>str</code> 将包含一个换行符。若读入字节且无错误发生,则紧随写入到 <code>str</code> 的最后一个字符后写入空字符。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>str</td>
|
||||
<td>-</td>
|
||||
<td>指向 char 数组元素的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>count</td>
|
||||
<td>-</td>
|
||||
<td>写入的最大字符数(典型的为 <code>str</code> 的长度)</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>读取数据来源的文件流</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>成功时为 <code>str</code> ,失败时为空指针。</p>
|
||||
<p>若遇到文件尾条件导致了失败,则设置 <code>stream</code> 上的<i>文件尾</i>指示器(见 <span class="t-lc"><a href="c-io-feof.html">feof()</a></span> )。这仅若它导致未读取字符才是失败,该情况下返回空指针且不改变 <code>str</code> 所指向数组的内容(即不以空字符覆写首字节)。</p>
|
||||
<p>若某些其他错误导致了失败,则设置 <code>stream</code> 上的<i>错误</i>指示器(见 <span class="t-lc"><a href="c-io-ferror.html">ferror()</a></span> )。 <code>str</code> 所指向的数组内容是不确定的(甚至可以不是空终止)。</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">注解</span></h3>
|
||||
<p><a rel="nofollow" class="external text" href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/fgets.html">POSIX 额外要求</a>若 <span class="t-c"><span class="mw-geshi c source-c">fgets</span></span> 遇到异于文件尾条件的失败则设置 <span class="t-lc"><a href="c-error-errno.html">errno</a></span> 。</p>
|
||||
<p>尽管标准规范在 <span class="t-c"><span class="mw-geshi c source-c">count<span class="sy1"><=</span><span class="nu0">1</span></span></span> 的情况下<a rel="nofollow" class="external text" href="https://stackoverflow.com/questions/23388620">不明</a>,常见的实现</p>
|
||||
<ul>
|
||||
<li>若 <span class="t-c"><span class="mw-geshi c source-c">count <span class="sy1"><</span> <span class="nu0">1</span></span></span> 则不做任何事并报告错误</li>
|
||||
<li>若 <span class="t-c"><span class="mw-geshi c source-c">count <span class="sy1">==</span> <span class="nu0">1</span></span></span> ,则</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>某些实现不做任何事并报告错误,</li>
|
||||
<li>其他实现不读内容,存储零于 <span class="t-c"><span class="mw-geshi c source-c">str<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span></span></span> 并报告成功</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-io.html"><span class="kw883">FILE</span></a><span class="sy2">*</span> tmpf <span class="sy1">=</span> <a href="c-io-tmpfile.html"><span class="kw881">tmpfile</span></a><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fputs.html"><span class="kw831">fputs</span></a><span class="br0">(</span><span class="st0">"Alan Turing<span class="es1">\n</span>"</span>, tmpf<span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fputs.html"><span class="kw831">fputs</span></a><span class="br0">(</span><span class="st0">"John von Neumann<span class="es1">\n</span>"</span>, tmpf<span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fputs.html"><span class="kw831">fputs</span></a><span class="br0">(</span><span class="st0">"Alonzo Church<span class="es1">\n</span>"</span>, tmpf<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<a href="c-io-rewind.html"><span class="kw874">rewind</span></a><span class="br0">(</span>tmpf<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw4">char</span> buf<span class="br0">[</span><span class="nu0">8</span><span class="br0">]</span><span class="sy4">;</span>
|
||||
<span class="kw1">while</span> <span class="br0">(</span>fgets<span class="br0">(</span>buf, <span class="kw4">sizeof</span> buf, tmpf<span class="br0">)</span> <span class="sy3">!</span><span class="sy1">=</span> <a href="c-types-NULL.html"><span class="kw103">NULL</span></a><span class="br0">)</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"<span class="es1">\"</span>%s<span class="es1">\"</span><span class="es1">\n</span>"</span>, buf<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw1">if</span> <span class="br0">(</span><a href="c-io-feof.html"><span class="kw876">feof</span></a><span class="br0">(</span>tmpf<span class="br0">)</span><span class="br0">)</span>
|
||||
<a href="c-io-puts.html"><span class="kw835">puts</span></a><span class="br0">(</span><span class="st0">"End of file reached"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">"Alan Tu"
|
||||
"ring
|
||||
"
|
||||
"John vo"
|
||||
"n Neuma"
|
||||
"nn
|
||||
"
|
||||
"Alonzo "
|
||||
"Church
|
||||
"
|
||||
End of file reached</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.7.2 The fgets function (p: 331)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.7.2 The fgets function (p: 296)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.7.2 The fgets function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fscanf.html"><span class="t-lines"><span>scanf</span><span>fscanf</span><span>sscanf</span><span>scanf_s</span><span>fscanf_s</span><span>sscanf_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span></span><span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从<span class="t-lc"><a href="c-io.html">stdin</a></span>、文件流或缓冲区读取格式化输入<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-gets.html"><span class="t-lines"><span>gets</span><span>gets_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-until-c11">(C11 中移除)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从 <code>stdin</code> 读取一个字符串<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fputs.html"><span class="t-lines"><span>fputs</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将一个字符串写入文件流<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-experimental-dynamic-getline.html"><span class="t-lines"><span>getline</span><span>getwline</span><span>getdelim</span><span>getwdelim</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-dynamic-tr t-mark-ts">(动态内存 TR)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从流读入至动态改变大小的缓冲区,直到分隔符/行尾<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,199 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>fgetwc</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_fgetwc skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">fgetwc</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><wchar.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody class="t-dcl-rev">
|
||||
<tr class="t-dcl t-since-c95">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">wint_t fgetwc<span class="br0">(</span> <a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c95">(C95 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c95">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">wint_t getwc<span class="br0">(</span> <a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c95">(C95 起)</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>从给定的输入流读取下个宽字符。 <span class="t-c"><span class="mw-geshi c source-c">getwc<span class="br0">(</span><span class="br0">)</span></span></span> 可以实现为宏,且可能对 <code>stream</code> 求值超过一次。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>要读取宽字符的流</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>来自流的下个宽字符,或若失败则为 <span class="t-c"><span class="mw-geshi c source-c">WEOF</span></span> 。</p>
|
||||
<p>若文件尾条件导致了失败,则额外设置 <code>stream</code> 上的<i>文件尾</i>指示器(见 <span class="t-lc"><a href="c-io-feof.html">feof()</a></span>) )。若某其他错误导致了失败,则设置 <code>stream</code> 上的<i>错误</i>指示器(见 <span class="t-lc"><a href="c-io-ferror.html">ferror()</a></span> )。</p>
|
||||
<p>若出现编码错误,则另外设置 <span class="t-lc"><a href="c-error-errno.html">errno</a></span> 为 <code>EILSEQ</code> 。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
<span class="co2">#include <wchar.h></span>
|
||||
<span class="co2">#include <errno.h></span>
|
||||
<span class="co2">#include <locale.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-locale-setlocale.html"><span class="kw900">setlocale</span></a><span class="br0">(</span><a href="c-locale-LC_categories.html"><span class="kw903">LC_ALL</span></a>, <span class="st0">"en_US.utf8"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>fp <span class="sy1">=</span> <a href="c-io-fopen.html"><span class="kw819">fopen</span></a><span class="br0">(</span><span class="st0">"fgetwc.dat"</span>, <span class="st0">"w"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">if</span><span class="br0">(</span><span class="sy3">!</span>fp<span class="br0">)</span> <span class="br0">{</span>
|
||||
<a href="c-io-perror.html"><span class="kw878">perror</span></a><span class="br0">(</span><span class="st0">"Can't open file for writing"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">return</span> <a href="c-program-EXIT_status.html"><span class="kw494">EXIT_FAILURE</span></a><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
<a href="c-io-fputs.html"><span class="kw832">fputs</span></a><span class="br0">(</span><span class="st0">"кошка<span class="es1">\n</span>"</span>, fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fclose.html"><span class="kw822">fclose</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
fp <span class="sy1">=</span> <a href="c-io-fopen.html"><span class="kw819">fopen</span></a><span class="br0">(</span><span class="st0">"fgetwc.dat"</span>, <span class="st0">"r"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">if</span><span class="br0">(</span><span class="sy3">!</span>fp<span class="br0">)</span> <span class="br0">{</span>
|
||||
<a href="c-io-perror.html"><span class="kw878">perror</span></a><span class="br0">(</span><span class="st0">"Can't open file for reading"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">return</span> <a href="c-program-EXIT_status.html"><span class="kw494">EXIT_FAILURE</span></a><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
wint_t wc<span class="sy4">;</span>
|
||||
<span class="kw2">errno</span> <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
|
||||
<span class="kw1">while</span> <span class="br0">(</span><span class="br0">(</span>wc <span class="sy1">=</span> fgetwc<span class="br0">(</span>fp<span class="br0">)</span><span class="br0">)</span> <span class="sy3">!</span><span class="sy1">=</span> WEOF<span class="br0">)</span>
|
||||
<a href="c-io-putwchar.html"><span class="kw842">putwchar</span></a><span class="br0">(</span>wc<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw1">if</span> <span class="br0">(</span><a href="c-io-ferror.html"><span class="kw877">ferror</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span>
|
||||
<span class="kw1">if</span> <span class="br0">(</span><span class="kw2">errno</span> <span class="sy1">==</span> <a href="c-error-errno_macros.html"><span class="kw432">EILSEQ</span></a><span class="br0">)</span>
|
||||
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">"Character encoding error while reading."</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">else</span>
|
||||
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">"I/O error when reading"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span> <span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span><a href="c-io-feof.html"><span class="kw876">feof</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="br0">)</span>
|
||||
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">"End of file reached successfully"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<a href="c-io-fclose.html"><span class="kw822">fclose</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">кошка</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.29.3.1 The fgetwc function (p: 421-422)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.29.3.6 The getwc function (p: 424)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.24.3.1 The fgetwc function (p: 367)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.24.3.6 The getwc function (p: 369)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fgetc.html"><span class="t-lines"><span>fgetc</span><span>getc</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从文件流获取一个字符<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fgetws.html"><span class="t-lines"><span>fgetws</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c95">(C95)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从文件流获取一个宽字符串<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fputwc.html"><span class="t-lines"><span>fputwc</span><span>putwc</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c95">(C95)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将一个宽字符写入文件流<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-ungetwc.html"><span class="t-lines"><span>ungetwc</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c95">(C95)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将一个宽字符送回文件流<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,146 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>fgetws</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_fgetws skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">fgetws</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><wchar.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody class="t-dcl-rev">
|
||||
<tr class="t-dcl t-since-c95 t-until-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">wchar_t</span> <span class="sy2">*</span>fgetws<span class="br0">(</span> <span class="kw4">wchar_t</span> <span class="sy2">*</span>str, <span class="kw4">int</span> count, <a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c95">(C95 起)</span><br />
|
||||
<span class="t-mark-rev t-until-c99">(C99 前)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">wchar_t</span> <span class="sy2">*</span>fgetws<span class="br0">(</span> <span class="kw4">wchar_t</span> <span class="sy2">*</span> <span class="kw4">restrict</span> str, <span class="kw4">int</span> count, <a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span> <span class="kw4">restrict</span> stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>从给定的文件流读取至多 <span class="t-c"><span class="mw-geshi c source-c">count <span class="sy2">-</span> <span class="nu0">1</span></span></span> 个宽字符,并将它们存储于 <code>str</code> 。产生的宽字符串始终是空终止的。若出现文件尾条件或找到换行宽字符则停止分析,后一情况下 <code>str</code> 将含有该宽换行符。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>str</td>
|
||||
<td>-</td>
|
||||
<td>要读取字符到的宽字符串</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>count</td>
|
||||
<td>-</td>
|
||||
<td><code>str</code> 的长度</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>读取数据来源的文件流</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>成功时为 <code>str</code> ,错误时为空指针。</p>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.29.3.2 The fgetws function (p: 422)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.24.3.2 The fgetws function (p: 367-368)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fwscanf.html"><span class="t-lines"><span>wscanf</span><span>fwscanf</span><span>swscanf</span><span>wscanf_s</span><span>fwscanf_s</span><span>swscanf_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c95">(C95)</span></span><span><span class="t-mark-rev t-since-c95">(C95)</span></span><span><span class="t-mark-rev t-since-c95">(C95)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从<span class="t-lc"><a href="c-io.html">stdin</a></span>、文件流或缓冲区读取格式化宽字符输入<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fgetwc.html"><span class="t-lines"><span>fgetwc</span><span>getwc</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c95">(C95)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从文件流获取一个宽字符<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fputws.html"><span class="t-lines"><span>fputws</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c95">(C95)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将一个宽字符串写入文件流<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-experimental-dynamic-getline.html"><span class="t-lines"><span>getline</span><span>getwline</span><span>getdelim</span><span>getwdelim</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-dynamic-tr t-mark-ts">(动态内存 TR)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从流读入至动态改变大小的缓冲区,直到分隔符/行尾<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,160 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>FILE</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_FILE skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">FILE</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><span class="kw1">typedef</span> <span class="coMULTI">/* unspecified */</span> <a href="c-io.html"><span class="kw884">FILE</span></a><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>每个 <code>FILE</code> 对象指代一个 C 流。</p>
|
||||
<p>C 标准不指定 <code>FILE</code> 是否为完整对象类型。当可能复制合法的 <code>FILE</code> 时,以指向这种副本的指针为 I/O 函数的参数导致未指定行为。换言之 <code>FILE</code> 可能在语义上不可复制。</p>
|
||||
<p>I/O 流能用于无格式和有格式的输入及输出。另外,处理输入输出的函数亦能为本地环境敏感,以按需进行宽/多字节转换。</p>
|
||||
<h3><span class="mw-headline" id=".E6.B5.81.E7.8A.B6.E6.80.81">流状态</span></h3>
|
||||
<p>在系统指定的需要访问设备的信息(<i>例如</i> POSIX 文件描述符)外,每个 <code>FILE</code> 对象直接或间接保有下列信息:</p>
|
||||
<ol>
|
||||
<li><span class="t-mark-rev t-since-c95">(C95)</span>字符宽度:未设置、窄或宽。</li>
|
||||
<li><span class="t-mark-rev t-since-c95">(C95)</span>多字节与宽字符间转换的分析状态( <span class="t-lc"><a href="c-string-multibyte-mbstate_t.html">mbstate_t</a></span> 类型对象)</li>
|
||||
<li>缓冲状态:无缓冲、行缓冲、全缓冲。</li>
|
||||
<li>缓冲区,可为外部的用户提供缓冲区所替换。</li>
|
||||
<li>I/O 模式:输入、输出或更新(兼具输入与输出)。</li>
|
||||
<li>二进制/文本模式指示器。</li>
|
||||
<li>文件尾指示器。</li>
|
||||
<li>错误状态指示器。</li>
|
||||
<li>文件位置指示器,可作为 <span class="t-lc"><a href="c-io.html">fpos_t</a></span> 类型对象访问,对于宽流包含剖析状态。</li>
|
||||
<li><span class="t-mark-rev t-since-c11">(C11)</span>在多个线程读、写、寻位或查询流时避免数据竞争的再入锁。</li>
|
||||
</ol>
|
||||
<h4><span class="mw-headline" id=".E7.AA.84.E4.B8.8E.E5.AE.BD.E9.9D.A2.E5.90.91">窄与宽面向</span></h4>
|
||||
<p>新打开的流无面向。首次到 <span class="t-lc">fwide</span> 的调用或 I/O 函数建立面向:宽 I/O 函数令流为宽面向,窄 I/O 函数令流为窄面向。一旦设置,则面向只能以 <span class="t-lc"><a href="c-io-freopen.html">freopen</a></span> 更改。不能在宽面向流上调用窄 I/O 函数,不能在窄面向流上调用宽 I/O 函数。宽 I/O 函数在宽与多字节字符间,如同通过以流所描述的转换状态调用 <span class="t-lc"><a href="c-string-multibyte-mbrtowc.html">mbrtowc</a></span> 或 <span class="t-lc"><a href="c-string-multibyte-wcrtomb.html">wcrtomb</a></span> 转换。不同于程序中合法的多字节字符串,文件中的多字节字符可以含有嵌入的空字符且不必以初始迁移状态开始或结束。</p>
|
||||
<h4><span class="mw-headline" id=".E4.BA.8C.E8.BF.9B.E5.88.B6.E4.B8.8E.E6.96.87.E6.9C.AC.E6.A8.A1.E5.BC.8F">二进制与文本模式</span></h4>
|
||||
<p><i>文本流</i>是能组合成行(零或更多字符加上终止的 <span class="t-c"><span class="mw-geshi c source-c"><span class="st0">'<span class="es1">\n</span>'</span></span></span> )的有序字符序列;行能分解成零或多个字符加一个终止的 <span class="t-c"><span class="mw-geshi c source-c"><span class="st0">'<span class="es1">\n</span>'</span></span></span> (“换行”)字符。最后一行是否要求终止的 <span class="t-c"><span class="mw-geshi c source-c"><span class="st0">'<span class="es1">\n</span>'</span></span></span> 是实现定义的。另外,可能必须在输入与输出时添加、切换或删除字符,以符合 OS 中的表示文本(尤其是 Windows OS 上的 C 流在输出时将 <span class="t-c"><span class="mw-geshi c source-c"><span class="st0">'<span class="es1">\n</span>'</span></span></span> 转换为 <span class="t-c"><span class="mw-geshi c source-c"><span class="st0">'<span class="es1">\r</span><span class="es1">\n</span>'</span></span></span> ,输入时将 <span class="t-c"><span class="mw-geshi c source-c"><span class="st0">'<span class="es1">\r</span><span class="es1">\n</span>'</span></span></span> 转换为 <span class="t-c"><span class="mw-geshi c source-c"><span class="st0">'<span class="es1">\n</span>'</span></span></span> )。</p>
|
||||
<p>仅若下列条件全为真,从文本流读取的数据才保证与先前写出到该文本流者比较相等:</p>
|
||||
<ul>
|
||||
<li>数据由打印字符和控制字符 <span class="t-c"><span class="mw-geshi c source-c"><span class="st0">'<span class="es1">\t</span>'</span></span></span> 及/或 <span class="t-c"><span class="mw-geshi c source-c"><span class="st0">'<span class="es1">\n</span>'</span></span></span> 组成(尤其是 Windows OS 上,字符 <span class="t-c"><span class="mw-geshi c source-c"><span class="st0">'<span class="es5">\0</span>x1A'</span></span></span> 终止输入)。</li>
|
||||
<li>无立即为空格符所前驱的 <span class="t-c"><span class="mw-geshi c source-c"><span class="st0">'<span class="es1">\n</span>'</span></span></span> 字符(当这种输出随后作为输入读入时,这种空格字符可能消失)。</li>
|
||||
<li>末字符是 <span class="t-c"><span class="mw-geshi c source-c"><span class="st0">'<span class="es1">\n</span>'</span></span></span> 。</li>
|
||||
</ul>
|
||||
<p><i>二进制流</i>是能通透地记录内部数据的有序字符序列。从二进制流读取的数据始终与先前写出到该流者比较相等,除了允许实现后附不确定数量的空字符到流结尾。宽二进制流不必终止于初始迁移状态。</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">注解</span></h3>
|
||||
<p>POSIX 显式要求在流的面向变成宽时,将当前安装的 C 本地环境的 <code>LC_CTYPE</code> 刻面存储于 <code>FILE</code> 对象中; POSIX 要求将此 <code>LC_CTYPE</code> 刻面用于此流上的所有将来 I/O 直至面向被更改,无关乎任何到 <span class="t-lc"><a href="c-locale-setlocale.html">setlocale</a></span> 的后继调用。</p>
|
||||
<p>有意令文本的每行均由实质上人类可读的数据组成。 POSIX 实现不辨别文本与二进制流(无 <span class="t-c"><span class="mw-geshi c source-c"><span class="st0">'<span class="es1">\n</span>'</span></span></span> 或任何其他字符的特殊映射)。</p>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-17">
|
||||
<ul>
|
||||
<li>C17 标准(ISO/IEC 9899:2018):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21 Input/output <stdio.h> (p: 217-247)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.29 Extended multibyte and wide character utilities <wchar.h> (p: 295-325)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21 Input/output <stdio.h> (p: 296-339)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.29 Extended multibyte and wide character utilities <wchar.h> (p: 402-446)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19 Input/output <stdio.h> (p: 262-305)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.24 Extended multibyte and wide character utilities <wchar.h> (p: 348-392)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9 INPUT/OUTPUT <stdio.h></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-std_streams.html"><span class="t-lines"><span>stdin</span><span>stdout</span><span>stderr</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>与标准输入流关联的 <span class="t-c"><span class="mw-geshi c source-c"><a href="c-io.html"><span class="kw884">FILE</span></a><span class="sy2">*</span></span></span> 类型表达式<br />
|
||||
与标准输出流关联的 <span class="t-c"><span class="mw-geshi c source-c"><a href="c-io.html"><span class="kw884">FILE</span></a><span class="sy2">*</span></span></span> 类型表达式<br />
|
||||
与标准错误输出流关联的 <span class="t-c"><span class="mw-geshi c source-c"><a href="c-io.html"><span class="kw884">FILE</span></a><span class="sy2">*</span></span></span> 类型表达式<br />
|
||||
<span class="t-mark">(宏常量)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,278 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>fopen, fopen_s</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_fopen skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">fopen, fopen_s</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody class="t-dcl-rev t-dcl-rev-num">
|
||||
<tr class="t-dcl-rev-aux">
|
||||
<td></td>
|
||||
<td rowspan="142">(1)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-until-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>fopen<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span>filename, <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span>mode <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-until-c99">(C99 前)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>fopen<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> filename, <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> mode <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">errno_t fopen_s<span class="br0">(</span><a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span><span class="kw4">restrict</span> <span class="sy2">*</span><span class="kw4">restrict</span> streamptr,<br /></span>
|
||||
<p> <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> filename,<br /></p>
|
||||
<span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> mode<span class="br0">)</span><span class="sy4">;</span></div>
|
||||
</td>
|
||||
<td>(2)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 打开 <code>filename</code> 所指示的文件,并返回指向关联到该文件的文件流的指针。 <code>mode</code> 用于确定文件访问模式。</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 同<span class="t-v">(1)</span>,除了指向文件流的指针被写入 <code>streamptr</code> ,还在运行时检测下列错误,并调用当前安装的<a href="c-error-set_constraint_handler_s.html">制约处理</a>函数:
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><code>streamptr</code> 是空指针</li>
|
||||
<li><code>filename</code> 是空指针</li>
|
||||
<li><code>mode</code> 是空指针</li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dd></dd>
|
||||
<dd>同所有边界检查函数, <code>fopen_s</code> 仅若实现定义了 <span class="t-c"><span class="mw-geshi c source-c">__STDC_LIB_EXT1__</span></span> ,且用户在包含 <code><stdio.h></code> 前定义 <span class="t-c"><span class="mw-geshi c source-c">__STDC_WANT_LIB_EXT1__</span></span> 为整数常量 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> 才保证可用。</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>filename</td>
|
||||
<td>-</td>
|
||||
<td>关联到文件系统的文件名</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>mode</td>
|
||||
<td>-</td>
|
||||
<td>确定访问模式的空终止字符串
|
||||
<table class="wikitable">
|
||||
<tr>
|
||||
<th>文件访问<br />
|
||||
模式字符串</th>
|
||||
<th>含义</th>
|
||||
<th>解释</th>
|
||||
<th>若文件已存在的动作</th>
|
||||
<th>若文件不存在的动作</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>"r"</code></td>
|
||||
<td>读</td>
|
||||
<td>打开文件以读取</td>
|
||||
<td>从头读</td>
|
||||
<td>打开失败</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>"w"</code></td>
|
||||
<td>写</td>
|
||||
<td>创建文件以写入</td>
|
||||
<td>销毁内容</td>
|
||||
<td>创建新文件</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>"a"</code></td>
|
||||
<td>后附</td>
|
||||
<td>后附到文件</td>
|
||||
<td>写到结尾</td>
|
||||
<td>创建新文件</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>"r+"</code></td>
|
||||
<td>读扩展</td>
|
||||
<td>打开文件以读/写</td>
|
||||
<td>从头读</td>
|
||||
<td>错误</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>"w+"</code></td>
|
||||
<td>写扩展</td>
|
||||
<td>创建文件以读/写</td>
|
||||
<td>销毁内容</td>
|
||||
<td>创建新文件</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>"a+"</code></td>
|
||||
<td>后附扩展</td>
|
||||
<td>打开文件以读/写</td>
|
||||
<td>写到结尾</td>
|
||||
<td>创建新文件</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>文件访问模式标签 <code>"b"</code> 可以可选地指定以二进制模式打开文件。此标签仅在 Windows 系统上生效。<br />
|
||||
在附加文件访问模式下,数据被写入到文件尾,而不考虑文件位置指示器的当前位置。</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>当文件以更新模式打开时( '+' 作为上述模式参数值列表的第二或第三个字符),访问流可以进行输入和输出。然而输出不应直接紧随输入,而中间无对 <span class="t-lc"><a href="c-io-fflush.html">fflush</a></span> 函数或对文件定位函数( <span class="t-lc"><a href="c-io-fseek.html">fseek</a></span> 、 <span class="t-lc"><a href="c-io-fsetpos.html">fsetpos</a></span> 或 <span class="t-lc"><a href="c-io-rewind.html">rewind</a></span> )的调用,且输入不应直接紧随输出,而中间无对文件定位函数的调用,除非输入操作遇到文件尾。在一些实现中,以更新模式打开(或创建)文本文件可能取代打开(或创建)二进制流。</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>文件访问模式标签 <code>"x"</code> 可以可选地后附于 "w" 或 "w+" 指定符。若文件存在,则此标签强制函数失败,而不重写它。<span class="t-mark-rev t-since-c11">(C11)</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>使用 <code>fopen_s</code> 或 <code>freopen_s</code> 时,任何以 "w" 或 "a" 创建的文件的文件访问许可禁止其他用户访问它。文件访问模式标签 <code>"u"</code> 可以可选地前附于任何以为 "w" 或 "a" 始的指定符,以启用默认的 <code>fopen</code> 许可。<span class="t-mark-rev t-since-c11">(C11)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>streamptr</td>
|
||||
<td>-</td>
|
||||
<td>指向存储函数结果的指针的指针(输出参数)</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 若成功,则返回指向新文件流的指针。流为完全缓冲,除非 <code>filename</code> 表示一个交互设备。错误时,返回空指针。 <a rel="nofollow" class="external text" href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/fopen.html">POSIX 要求</a>此情况下必须设置 <span class="t-lc"><a href="c-error-errno.html">errno</a></span> 。</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 若成功,则返回零并将新文件流指针写入 <code>*streamptr</code> 。错误时,返回非零错误码并将空指针写入 <code>*streamptr</code> (除非 <code>streamptr</code> 自身也是空指针)。</div>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h3>
|
||||
<p><code>filename</code> 的格式是实现定义的,而且不需要表示一个文件(譬如可以是控制台或另一能通过文件系统 API 访问的设备)。在支持的平台上, <code>filename</code> 可以包含绝对或相对路径。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-io.html"><span class="kw883">FILE</span></a><span class="sy2">*</span> fp <span class="sy1">=</span> fopen<span class="br0">(</span><span class="st0">"test.txt"</span>, <span class="st0">"r"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">if</span><span class="br0">(</span><span class="sy3">!</span>fp<span class="br0">)</span> <span class="br0">{</span>
|
||||
<a href="c-io-perror.html"><span class="kw878">perror</span></a><span class="br0">(</span><span class="st0">"File opening failed"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">return</span> <a href="c-program-EXIT_status.html"><span class="kw494">EXIT_FAILURE</span></a><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
|
||||
<span class="kw4">int</span> c<span class="sy4">;</span> <span class="co1">// 注意:int,非char,要求处理EOF</span>
|
||||
<span class="kw1">while</span> <span class="br0">(</span><span class="br0">(</span>c <span class="sy1">=</span> <a href="c-io-fgetc.html"><span class="kw826">fgetc</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="br0">)</span> <span class="sy3">!</span><span class="sy1">=</span> <a href="c-io.html"><span class="kw888">EOF</span></a><span class="br0">)</span> <span class="br0">{</span> <span class="co1">// 标准C I/O读取文件循环</span>
|
||||
<a href="c-io-putchar.html"><span class="kw834">putchar</span></a><span class="br0">(</span>c<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
|
||||
<span class="kw1">if</span> <span class="br0">(</span><a href="c-io-ferror.html"><span class="kw877">ferror</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="br0">)</span>
|
||||
<a href="c-io-puts.html"><span class="kw835">puts</span></a><span class="br0">(</span><span class="st0">"I/O error when reading"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span><a href="c-io-feof.html"><span class="kw876">feof</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="br0">)</span>
|
||||
<a href="c-io-puts.html"><span class="kw835">puts</span></a><span class="br0">(</span><span class="st0">"End of file reached successfully"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<a href="c-io-fclose.html"><span class="kw821">fclose</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.5.3 The fopen function (p: 305-306)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.5.2.1 The fopen_s function (p: 588-590)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.5.3 The fopen function (p: 271-272)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.5.3 The fopen function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fclose.html"><span class="t-lines"><span>fclose</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>关闭文件<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fflush.html"><span class="t-lines"><span>fflush</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将输出流与实际文件同步<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-freopen.html"><span class="t-lines"><span>freopen</span><span>freopen_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>以不同名称打开既存的文件流<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,143 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>fpos_t</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_fpos_t skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">fpos_t</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><span class="kw1">typedef</span> <span class="coMULTI">/* implementation-defined */</span> <a href="c-io.html"><span class="kw885">fpos_t</span></a><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><code>fpos_t</code> 是非数组完整对象类型,能用于存储(由 <span class="t-lc"><a href="c-io-fgetpos.html">fgetpos</a></span> )及恢复(由 <span class="t-lc"><a href="c-io-fsetpos.html">fsetpos</a></span> ) C 流的位置与多字节分析状态(若存在)。</p>
|
||||
<table class="t-rev-begin">
|
||||
<tr class="t-rev t-since-c95">
|
||||
<td>
|
||||
<p>宽面向的 C 流的多字节分析状态以 <span class="t-lc"><a href="c-string-multibyte-mbstate_t.html">mbstate_t</a></span> 对象表示,其值由 <span class="t-lc"><a href="c-io-fgetpos.html">fgetpos</a></span> 作为 <code>fpos_t</code> 对象的值的一部分存储。</p>
|
||||
</td>
|
||||
<td><span class="t-mark-rev t-since-c95">(C95 起)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.1 Introduction (p: 296-298)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.2 Streams (p: 298-299)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.1 Introduction (p: 262-264)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.2 Streams (p: 264-265)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.1 Introduction</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.2 Streams</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fgetpos.html"><span class="t-lines"><span>fgetpos</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>获取文件位置指示器<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fsetpos.html"><span class="t-lines"><span>fsetpos</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将文件位置指示器移动到文件中的指定位置<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-string-multibyte-mbstate_t.html"><span class="t-lines"><span>mbstate_t</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c95">(C95)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>迭代多字节字符串所需的转换信息<br />
|
||||
<span class="t-mark">(结构体)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,865 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>printf, fprintf, sprintf, snprintf, printf_s, fprintf_s, sprintf_s, snprintf_s</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_fprintf skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">printf, fprintf, sprintf, snprintf, printf_s, fprintf_s, sprintf_s, snprintf_s</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody class="t-dcl-rev t-dcl-rev-num">
|
||||
<tr class="t-dcl-rev-aux">
|
||||
<td></td>
|
||||
<td rowspan="142">(1)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-until-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> printf<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span>format, ... <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-until-c99">(C99 前)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> printf<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> format, ... <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody></tbody>
|
||||
<tbody class="t-dcl-rev t-dcl-rev-num">
|
||||
<tr class="t-dcl-rev-aux">
|
||||
<td></td>
|
||||
<td rowspan="142">(2)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-until-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> fprintf<span class="br0">(</span> <a href="c-io.html"><span class="kw880">FILE</span></a> <span class="sy2">*</span>stream, <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span>format, ... <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-until-c99">(C99 前)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> fprintf<span class="br0">(</span> <a href="c-io.html"><span class="kw880">FILE</span></a> <span class="sy2">*</span><span class="kw4">restrict</span> stream, <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> format, ... <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody></tbody>
|
||||
<tbody class="t-dcl-rev t-dcl-rev-num">
|
||||
<tr class="t-dcl-rev-aux">
|
||||
<td></td>
|
||||
<td rowspan="142">(3)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-until-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> sprintf<span class="br0">(</span> <span class="kw4">char</span> <span class="sy2">*</span>buffer, <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span>format, ... <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-until-c99">(C99 前)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> sprintf<span class="br0">(</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> buffer, <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> format, ... <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody>
|
||||
<tr class="t-dcl t-since-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> snprintf<span class="br0">(</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> buffer, <span class="kw4">int</span> bufsz,<br />
|
||||
<span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> format, ... <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(4)</td>
|
||||
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> printf_s<span class="br0">(</span><span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> format, ...<span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(5)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> fprintf_s<span class="br0">(</span><a href="c-io.html"><span class="kw880">FILE</span></a> <span class="sy2">*</span><span class="kw4">restrict</span> stream, <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> format, ...<span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(6)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> sprintf_s<span class="br0">(</span><span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> buffer, rsize_t bufsz,<br />
|
||||
<span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> format, ...<span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(7)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> snprintf_s<span class="br0">(</span><span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> buffer, rsize_t bufsz,<br />
|
||||
<span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> format, ...<span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(8)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>从给定位置加载数据,转换为字符串等价物,并写结果到各种池。</p>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 写结果到 <span class="t-lc"><a href="c-io.html">stdout</a></span> 。</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 写结果到文件流 <code>stream</code> 。</div>
|
||||
<div class="t-li1"><span class="t-li">3)</span> 写结果到字符串 <code>buffer</code> 。</div>
|
||||
<div class="t-li1"><span class="t-li">4)</span> 写结果到字符串 <code>buffer</code> 。至多写 <code>buf_size</code> - 1 个字符。产生的字符串会以空字符终止,除非 <code>buf_size</code> 为零。若 <code>buf_size</code> 为零,则不写入任何内容,且 <code>buffer</code> 可以是空指针,然而依旧计算返回值(会写入的字符数,不包含空终止符)并返回。</div>
|
||||
<div class="t-li1"><span class="t-li">5-8)</span> 同 <span class="t-v">(1-4)</span> ,除了在运行时检测下列错误,并调用当前安装的<a href="c-error-set_constraint_handler_s.html">制约处理</a>函数:
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><code>format</code> 中存在转换说明符 <code>%n</code></li>
|
||||
<li>任何一个对应 <code>%s</code> 的参数是空指针</li>
|
||||
<li><code>format</code> 或 <code>buffer</code> 是空指针</li>
|
||||
<li><code>bufsz</code> 为零或大于 <span class="t-lc">RSIZE_MAX</span></li>
|
||||
<li>在任何一个字符串及字符转换说明符中出现编码错误</li>
|
||||
<li>(仅对于 <code>sprintf_s</code> )存储于 <code>buffer</code> 的字符串(包括尾随空字符)长度将超出 <code>bufsz</code></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dd></dd>
|
||||
<dd>同所有边界检查函数, <code>printf_s, fprintf_s, sprintf_s, snrintf_s</code> 仅若实现定义了 <span class="t-c"><span class="mw-geshi c source-c">__STDC_LIB_EXT1__</span></span> ,且用户在包含 <code><stdio.h></code> 前定义 <span class="t-c"><span class="mw-geshi c source-c">__STDC_WANT_LIB_EXT1__</span></span> 为整数常量 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> 才保证可用。</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>要写入的输出文件流</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>buffer</td>
|
||||
<td>-</td>
|
||||
<td>指向要写入的字符串的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>bufsz</td>
|
||||
<td>-</td>
|
||||
<td>最多会写入 bufsz - 1 个字符,再加空终止符</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>format</td>
|
||||
<td>-</td>
|
||||
<td>指向指定数据转译方式的空终止多字节字符串的指针。
|
||||
<p>格式字符串由普通多字节字符(除了 <code><b>%</b></code> )和转换指定构成,前者被复制到输出流而无更改。每个转换指定拥有下列格式:</p>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>引入的 <code><b>%</b></code> 字符</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><span class="t-mark">(可选)</span>一或多个修改转换行为的标签:</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><code><b>-</b></code> :转换结果在域内左校正(默认为右校正)</li>
|
||||
<li><code><b>+</b></code> :有符号转换的符号始终前置于转换结果(默认结果前置负号仅当它为负)</li>
|
||||
<li><i>空格</i>:若有符号转换的结果不以符号开始,或为空,则前置空格于结果。若存在 <code>+</code> 标签则忽略<i>空格</i>。</li>
|
||||
<li><code><b>#</b></code> :进行<i>替用形式</i>的转换。准确的效果见下表,其他情况下行为未定义。</li>
|
||||
<li><code><b>0</b></code> :对于整数和浮点数转换,使用前导零代替<i>空格</i>字符填充域。对于整数,若显式指定精度,则忽略此标签。对于其他转换,使用此标签导致未定义行为。若存在 <code>-</code> 标签则忽略 <code>0</code> 。</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><span class="t-mark">(可选)</span>指定最小域宽的整数值或 <code>*</code> 。若有要求,则结果会以<i>空格</i>字符(默认情况)填充,在右校正时于左,左校正时于右。使用 <code>*</code> 的情况下,以一个额外的 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">int</span></span></span> 类型参数指定宽度。若参数值为负数,则它导致指定 <code>-</code> 标签和正域宽。(注意:这是最小宽度:决不被截断值)。</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><span class="t-mark">(可选)</span>后随整数或 <code><b>*</b></code> 或两者皆无的 <code><b>.</b></code> 指示转换的<i>精度</i>。在使用 <code>*</code> 的情况下,<i>精度</i>由额外的 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">int</span></span></span> 类型参数指定。若此参数的值为负数,则它被忽略。若既不使用数字亦不使用 <code><b>*</b></code> ,则精度采用零。<i>精度</i>的准确效果见下表。</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><span class="t-mark">(可选)</span>指定参数大小的<i>长度修饰符</i></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>转换格式指定符</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<p>下列格式指定符可用:</p>
|
||||
<table class="wikitable" style="text-align:center; font-size:85%; max-width:90em;">
|
||||
<tr>
|
||||
<th rowspan="1">转换<br />
|
||||
指定符</th>
|
||||
<th rowspan="1">解释</th>
|
||||
<th colspan="9">参数类型</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="2" style="text-align:right; font-weight:normal;">长度修饰符</th>
|
||||
<th><code>hh</code>
|
||||
<p><span class="t-mark-rev t-since-c99">(C99)</span></p>
|
||||
</th>
|
||||
<th><code>h</code></th>
|
||||
<th style="font-weight:normal;">(无)</th>
|
||||
<th><code><b>l</b></code></th>
|
||||
<th><code><b>ll</b></code>
|
||||
<p><span class="t-mark-rev t-since-c99">(C99)</span></p>
|
||||
</th>
|
||||
<th><code><b>j</b></code>
|
||||
<p><span class="t-mark-rev t-since-c99">(C99)</span></p>
|
||||
</th>
|
||||
<th><code><b>z</b></code>
|
||||
<p><span class="t-mark-rev t-since-c99">(C99)</span></p>
|
||||
</th>
|
||||
<th><code><b>t</b></code>
|
||||
<p><span class="t-mark-rev t-since-c99">(C99)</span></p>
|
||||
</th>
|
||||
<th><code><b>L</b></code></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>%</code></th>
|
||||
<td style="text-align:left;">写字面的 <code><b>%</b></code> 。完整转换指定必须是 <code><b>%%</b></code> 。</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>c</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>写<b>单个字符</b>。</dd>
|
||||
</dl>
|
||||
<p>参数首先被转换成 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">unsigned</span> <span class="kw4">char</span></span></span> 。 若使用 <b>l</b> 修饰符,则参数首先被转换成字符串,如同通过以 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">wchar_t</span><span class="br0">[</span><span class="nu0">2</span><span class="br0">]</span></span></span> 参数使用 <b>%ls</b> 。</p>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">int</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c">wint_t</span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>s</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>写<b>字符串</b></dd>
|
||||
</dl>
|
||||
<p>参数必须是指向字符数组首元素的指针 <i>精度</i>指定写入最大的字符数。若未指定<i>精度</i>,则写每个字节直到而不含首个空终止符。 若使用 <b>l</b> 指定符,则参数必须是指向 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">wchar_t</span></span></span> 数组首元素的指针,数组会被转换成 char 数组,如同通过以零初始化转换状态调用 <span class="t-lc"><a href="c-string-multibyte-wcrtomb.html">wcrtomb</a></span> 。</p>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">char</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">wchar_t</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>d</code><br />
|
||||
<code>i</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>转换<b>有符号整数</b>为十进制表示 <i>[-]dddd</i> 。</dd>
|
||||
</dl>
|
||||
<p><i>精度</i>指定出现的最小数位数。默认精度是 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> 。<br />
|
||||
若被转换的值和精度都是 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> ,则转换结果无字符。</p>
|
||||
</td>
|
||||
<td rowspan="1">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">signed</span> <span class="kw4">char</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="1">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">short</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="1">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">int</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="1">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">long</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="1">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">long</span> <span class="kw4">long</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="1">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><a href="c-types-integer.html"><span class="kw118">intmax_t</span></a></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="1">
|
||||
<div class="t-vertical">
|
||||
<div>有符号 <span class="t-c"><span class="mw-geshi c source-c"><a href="c-types-size_t.html"><span class="kw100">size_t</span></a></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="1">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><a href="c-types-ptrdiff_t.html"><span class="kw101">ptrdiff_t</span></a></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>o</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>转换<b>无符号整数</b>为八进制表示 <i>oooo</i> 。</dd>
|
||||
</dl>
|
||||
<p><i>精度</i>指定出现的最小数位数。默认精度是 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> 。 若被转换值和精度都是 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> ,则转换结果无字符。 在<i>替用实现</i>中精度按需增加,以写入一个前导零。 在此情况下若被转换值和精度都是 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> ,则写入单个 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> 。</p>
|
||||
</td>
|
||||
<td rowspan="3">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">unsigned</span> <span class="kw4">char</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="3">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">unsigned</span> <span class="kw4">short</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="3">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">unsigned</span> <span class="kw4">int</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="3">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">unsigned</span> <span class="kw4">long</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="3">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">unsigned</span> <span class="kw4">long</span> <span class="kw4">long</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="3">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><a href="c-types-integer.html"><span class="kw132">uintmax_t</span></a></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="3">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><a href="c-types-size_t.html"><span class="kw100">size_t</span></a></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="3">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><a href="c-types-ptrdiff_t.html"><span class="kw101">ptrdiff_t</span></a></span></span> 的无符号版本</div>
|
||||
</div>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>x</code><br />
|
||||
<code>X</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>转换<b>无符号整数</b>为十六进制表示 <i>hhhh</i> 。</dd>
|
||||
</dl>
|
||||
<p><code><b>x</b></code> 转换使用字母 <code>abcdef</code> 。<br />
|
||||
<code><b>X</b></code> 转换使用 <code>ABCDEF</code> 。<br />
|
||||
<i>精度</i>指定出现的最小数位数。默认精度是 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> 。 若被转换值和精度都是 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> ,则转换结果无字符。 在<i>替用实现中</i>若被转换值为非零则结果有 <code><b>0x</b></code> 或 <code><b>0X</b></code> 前缀。</p>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>u</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>转换<b>无符号整数</b>为十进制表示 <i>dddd</i> 。</dd>
|
||||
</dl>
|
||||
<p><i>精度</i>指定出现的最小数位数。 默认精度是 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> 。 若被转换值和精度都是 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> ,则转换结果无字符。</p>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>f</code><br />
|
||||
<code>F</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>转换<b>浮点数</b>为 <i>[-]ddd.ddd</i> 样式的十进制记法。</dd>
|
||||
</dl>
|
||||
<p><i>精度</i>指定小数点字符后出现的准确数位数。 默认精度是 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">6</span></span></span> 。 在<i>替用实现</i>中即使没有小数点后数位也写小数点。 无穷大和非数的转换样式见注意。</p>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td rowspan="4">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">double</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="4">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">double</span></span></span> <span class="t-mark-rev t-since-c99">(C99)</span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td rowspan="4">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">long</span> <span class="kw4">double</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>e</code><br />
|
||||
<code>E</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>转换<b>浮点数</b>为十进制指数记法。</dd>
|
||||
</dl>
|
||||
<p><code><b>e</b></code> 转换样式使用 <i>[-]d.ddd</i><code><b>e</b></code><i>±dd</i> 。<br />
|
||||
<code><b>E</b></code> 转换样式使用 <i>[-]d.ddd</i><code><b>E</b></code><i>±dd</i> 。<br />
|
||||
指数至少含二个数位,仅当所需时使用更多数位。 若值为 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> ,则指数亦为 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> 。 <i>精度</i>指定小数点字符后出现的最小数位数。 默认精度是 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">6</span></span></span> 。 在<i>替用实现</i>中即使没有小数点后数位也写小数点。 无穷大和非数的转换样式见注意。</p>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>a</code><br />
|
||||
<code>A</code>
|
||||
<p><span class="t-mark-rev t-since-c99">(C99)</span></p>
|
||||
</th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>转换<b>浮点数</b>为十六进制记法。</dd>
|
||||
</dl>
|
||||
<p><code><b>a</b></code> 转换样式使用 <i>[-]</i><code><b>0x</b></code><i>h.hhh</i><code><b>p</b></code><i>±d</i> 。<br />
|
||||
<code><b>A</b></code> 转换样式使用 <i>[-]</i><code><b>0X</b></code><i>h.hhh</i><code><b>P</b></code><i>±d</i> 。<br />
|
||||
若参数是正规化的浮点值,则首个十六进制数位非 <code>0</code> 。 若值为 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> ,则指数亦为 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> 。 <i>精度</i>指定小数点字符后出现的最小数位数。 默认精度足以准确表示该值。 在<i>替用实现</i>中即使没有小数点后数位也写小数点。 无穷大和非数的转换样式见注意。</p>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>g</code><br />
|
||||
<code>G</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>转换<b>浮点数</b>为十进制小数或十进制指数记法,依赖于值和<i>精度</i>。</dd>
|
||||
</dl>
|
||||
<p><code><b>g</b></code> 转换样式将进行带样式 <code><b>e</b></code> 或 <code><b>f</b></code> 的转换。<br />
|
||||
<code><b>G</b></code> 转换样式将进行带样式 <code><b>E</b></code> 或 <code><b>F</b></code> 的转换。<br />
|
||||
令 <code>P</code> 等于精度,若它非零,若精度未指定则为 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">6</span></span></span> ,若精度为 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> 则等于 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> 。然后,若带样式 <code>E</code> 的转换会有指数 <code>X</code> ,则:</p>
|
||||
<ul>
|
||||
<li>若 <i>P > X ≥ −4</i> ,则转换带 <code><b>f</b></code> 或 <code><b>F</b></code> 风格,及精度 <i>P − 1 − X</i> 。</li>
|
||||
<li>否则,转换带 <code><b>e</b></code> 或 <code><b>E</b></code> 风格,及精度 <i>P − 1</i> 。</li>
|
||||
</ul>
|
||||
<p>除非要求<i>替用表示</i>,否则末尾零会被移除,且若不留下小数部分则小数点亦被移除。 无穷大和非数的转换样式见注意。</p>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>n</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>返回对函数的此调用迄今为止<b>写入的字符数</b>。</dd>
|
||||
</dl>
|
||||
<p>结果被<i>写入</i>到参数所指向的值。 该指定不可含有任何<i>标签</i>、<i>域宽</i>或<i>精度</i>。</p>
|
||||
</td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">signed</span> <span class="kw4">char</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">short</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">int</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">long</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">long</span> <span class="kw4">long</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><a href="c-types-integer.html"><span class="kw118">intmax_t</span></a><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div>有符号 <span class="t-c"><span class="mw-geshi c source-c"><a href="c-types-size_t.html"><span class="kw100">size_t</span></a><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><a href="c-types-ptrdiff_t.html"><span class="kw101">ptrdiff_t</span></a><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>p</code></th>
|
||||
<td style="text-align:left;">写定义<b>指针</b>的实现定义字符序列。</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">void</span><span class="sy2">*</span></span></span></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>浮点转换函数转换无穷大到 <code>inf</code> 或 <code>infinity</code> 。使用哪个是实现定义的。</p>
|
||||
<p>非数转换成 <code>nan</code> 或 <code>nan(<i>char_sequence</i>)</code> 。使用哪个是实现定义的。</p>
|
||||
<p>转换 <code><b>F</b></code> 、 <code><b>E</b></code> 、 <code><b>G</b></code> 、 <code><b>A</b></code> 替代上面输出 <code>INF</code> 、 <code>INFINITY</code> 、 <code>NAN</code>。</p>
|
||||
<p>尽管 <code>%c</code> 期待 <code>int</code> 参数,传递 <code>char</code> 是安全的,因为在调用变参数函数时发生整数提升。</p>
|
||||
<p>定宽整数类型( <span class="t-lc"><a href="c-types-integer.html">int8_t</a></span> 等)的正确转换指定定义于头文件 <a href="c-types-integer.html"><inttypes.h></a> (尽管 <span class="t-lc"><a href="c-types-integer.html">PRIdMAX</a></span> 、 <span class="t-lc"><a href="c-types-integer.html">PRIuMAX</a></span> 等就是 <code>%jd</code> 、 <code>%ju</code> 等的别名)。</p>
|
||||
<p>内存写入转换指定符 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">%</span>n</span></span> 是安全漏洞的常见目标,这里格式字符串依赖用户输入,而有边界检查的 <code>printf_s</code> 系列函数不支持此转换指定符。</p>
|
||||
<p>在每个转换指定符的行动后有一个<a href="c-language-eval_order.html">序列点</a>;这允许于同一变量多次存入 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">%</span>n</span></span> 的结果,并在同一此调用中打印出先前以 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">%</span>n</span></span> 存储的值。</p>
|
||||
<p>若转换指定非法,则行为未定义。</p>
|
||||
<p><br /></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>...</td>
|
||||
<td>-</td>
|
||||
<td>指定要打印数据的参数。若任何<a href="c-language-conversion.html#.E9.BB.98.E8.AE.A4.E5.8F.82.E6.95.B0.E6.8F.90.E5.8D.87">默认参数提升</a>后的参数不拥有对应转换说明符所期待的类型,或若参数数量少于 <code>format</code> 的要求,则行为未定义。若有多于 <code>format</code> 要求的参数,则求值并忽略多出的参数。</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<div class="t-li1"><span class="t-li">1,2)</span> 传输到输出流的字符数,或若出现输出错误或编码错误(对于字符串和字符转换说明符)则为负值。</div>
|
||||
<div class="t-li1"><span class="t-li">3)</span> 写入到 <code>buffer</code> 的字符数(不计空终止字符),或若输出错误或编码错误(对于字符串和字符转换说明符)发生则为负值。</div>
|
||||
<div class="t-li1"><span class="t-li">4)</span> 假如忽略 <code>bufsz</code> 则本应写入到 <code>buffer</code> 的字符数(不计空终止字符),或若出现输出错误或编码错误(对于字符串和字符转换说明符)则为负值。</div>
|
||||
<div class="t-li1"><span class="t-li">5,6)</span> 传输到输出流的字符数,或若出现输出错误、运行时制约违规错误或编码错误则为负值。</div>
|
||||
<div class="t-li1"><span class="t-li">7)</span> 写入到<code>buffer</code>的字符数,不计空终止字符(只要 <code>buffer</code> 不是空指针且 <code>bufsz</code> 非零且不大于 <code>RSIZE_MAX</code> ,就写入它),在运行时制约违规时为零,而在编码错误时为负值。</div>
|
||||
<div class="t-li1"><span class="t-li">8)</span> 假如忽略 <code>bufsz</code> 则本应写入 <code>buffer</code> 的字符数的,不包含空终止字符(只要 <code>buffer</code> 不是空指针而 <code>bufsz</code> 非零且不大于 <code>RSIZE_MAX</code> ,就写入它),或若出现输出错误、运行时制约违规错误或编码错误则为负值。</div>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">注解</span></h3>
|
||||
<p>C 标准及<a rel="nofollow" class="external text" href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/fprintf.html">POSIX</a> 指定 <code>sprintf</code> 及其变体的行为在参数与目标缓冲区重叠时未定义。示例:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1">sprintf<span class="br0">(</span>dst, <span class="st0">"%s and %s"</span>, dst, t<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// <- 有错:未定义行为</span></pre></div>
|
||||
</div>
|
||||
<p><a rel="nofollow" class="external text" href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/fprintf.html">POSIX 规定</a>在错误时设置 <span class="t-lc"><a href="c-error-errno.html">errno</a></span> 。它亦指定额外的转换指定,最值得注意的是对参数重排序的支持(紧随 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">%</span></span></span> 后的 <span class="t-c"><span class="mw-geshi c source-c">n$</span></span> 指示第 <code>n</code> 个参数)。</p>
|
||||
<p>以零为 <code>bufsz</code> 和空指针为 <code>buffer</code> 调用 <code>snprintf</code> 可用于决定包含输出的缓冲区大小:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span>fmt <span class="sy1">=</span> <span class="st0">"sqrt(2) = %f"</span><span class="sy4">;</span>
|
||||
<span class="kw4">int</span> sz <span class="sy1">=</span> snprintf<span class="br0">(</span><a href="c-types-NULL.html"><span class="kw103">NULL</span></a>, <span class="nu0">0</span>, fmt, <a href="c-numeric-math-sqrt.html"><span class="kw665">sqrt</span></a><span class="br0">(</span><span class="nu0">2</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw4">char</span> buf<span class="br0">[</span>sz <span class="sy2">+</span> <span class="nu0">1</span><span class="br0">]</span><span class="sy4">;</span> <span class="co1">// 注意为终止空字符 +1</span>
|
||||
snprintf<span class="br0">(</span>buf, <span class="kw4">sizeof</span> buf, fmt, <a href="c-numeric-math-sqrt.html"><span class="kw665">sqrt</span></a><span class="br0">(</span><span class="nu0">2</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span></pre></div>
|
||||
</div>
|
||||
<p>同 <code>snprintf</code> ,但不同于 <code>sprintf_s</code> , <code>snprintf_s</code> 会将输出截断在 <code>bufsz-1</code> 之内。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
printf<span class="br0">(</span><span class="st0">"Strings:<span class="es1">\n</span>"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw4">const</span> <span class="kw4">char</span><span class="sy2">*</span> s <span class="sy1">=</span> <span class="st0">"Hello"</span><span class="sy4">;</span>
|
||||
printf<span class="br0">(</span><span class="st0">"<span class="es1">\t</span>.%10s.<span class="es1">\n</span><span class="es1">\t</span>.%-10s.<span class="es1">\n</span><span class="es1">\t</span>.%*s.<span class="es1">\n</span>"</span>, s, s, <span class="nu0">10</span>, s<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
printf<span class="br0">(</span><span class="st0">"Characters:<span class="es1">\t</span>%c %%<span class="es1">\n</span>"</span>, <span class="nu0">65</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
printf<span class="br0">(</span><span class="st0">"Integers<span class="es1">\n</span>"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
printf<span class="br0">(</span><span class="st0">"Decimal:<span class="es1">\t</span>%i %d %.6i %i %.0i %+i %u<span class="es1">\n</span>"</span>, <span class="nu0">1</span>, <span class="nu0">2</span>, <span class="nu0">3</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">4</span>, <span class="sy2">-</span><span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
printf<span class="br0">(</span><span class="st0">"Hexadecimal:<span class="es1">\t</span>%x %x %X %#x<span class="es1">\n</span>"</span>, <span class="nu0">5</span>, <span class="nu0">10</span>, <span class="nu0">10</span>, <span class="nu0">6</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
printf<span class="br0">(</span><span class="st0">"Octal:<span class="es1">\t</span>%o %#o %#o<span class="es1">\n</span>"</span>, <span class="nu0">10</span>, <span class="nu0">10</span>, <span class="nu0">4</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
printf<span class="br0">(</span><span class="st0">"Floating point<span class="es1">\n</span>"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
printf<span class="br0">(</span><span class="st0">"Rounding:<span class="es1">\t</span>%f %.0f %.32f<span class="es1">\n</span>"</span>, <span class="nu16">1.5</span>, <span class="nu16">1.5</span>, <span class="nu16">1.3</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
printf<span class="br0">(</span><span class="st0">"Padding:<span class="es1">\t</span>%05.2f %.2f %5.2f<span class="es1">\n</span>"</span>, <span class="nu16">1.5</span>, <span class="nu16">1.5</span>, <span class="nu16">1.5</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
printf<span class="br0">(</span><span class="st0">"Scientific:<span class="es1">\t</span>%E %e<span class="es1">\n</span>"</span>, <span class="nu16">1.5</span>, <span class="nu16">1.5</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
printf<span class="br0">(</span><span class="st0">"Hexadecimal:<span class="es1">\t</span>%a %A<span class="es1">\n</span>"</span>, <span class="nu16">1.5</span>, <span class="nu16">1.5</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">Strings:
|
||||
. Hello.
|
||||
.Hello .
|
||||
. Hello.
|
||||
Characters: A %
|
||||
Integers
|
||||
Decimal: 1 2 000003 0 +4 4294967295
|
||||
Hexadecimal: 5 a A 0x6
|
||||
Octal: 12 012 04
|
||||
Floating point
|
||||
Rounding: 1.500000 2 1.30000000000000004440892098500626
|
||||
Padding: 01.50 1.50 1.50
|
||||
Scientific: 1.500000E+00 1.500000e+00
|
||||
Hexadecimal: 0x1.8p+0 0X1.8P+0</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.6.1 The fprintf function (p: 309-316)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.6.3 The printf function (p: 324)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.6.5 The snprintf function (p: 325)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.6.6 The sprintf function (p: 325-326)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.5.3.1 The fprintf_s function (p: 591)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.5.3.3 The printf_s function (p: 593-594)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.5.3.5 The snprintf_s function (p: 594-595)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.5.3.6 The sprintf_s function (p: 595-596)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.6.1 The fprintf function (p: 274-282)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.6.3 The printf function (p: 290)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.6.5 The snprintf function (p: 290-291)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.6.6 The sprintf function (p: 291)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.6.1 The fprintf function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.6.3 The printf function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.6.5 The sprintf function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fwprintf.html"><span class="t-lines"><span>wprintf</span><span>fwprintf</span><span>swprintf</span><span>wprintf_s</span><span>fwprintf_s</span><span>swprintf_s</span><span>snwprintf_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c95">(C95)</span></span><span><span class="t-mark-rev t-since-c95">(C95)</span></span><span><span class="t-mark-rev t-since-c95">(C95)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>打印格式化宽字符输出到 <span class="t-lc"><a href="c-io.html">stdout</a></span> 、文件流或缓冲区<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-vfprintf.html"><span class="t-lines"><span>vprintf</span><span>vfprintf</span><span>vsprintf</span><span>vsnprintf</span><span>vprintf_s</span><span>vfprintf_s</span><span>vsprintf_s</span><span>vsnprintf_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span></span><span></span><span><span class="t-mark-rev t-since-c99">(C99)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>打印格式化输出到<span class="t-lc"><a href="c-io.html">stdout</a></span>、文件流或缓冲区<br />
|
||||
使用可变参数列表<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fputs.html"><span class="t-lines"><span>fputs</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将一个字符串写入文件流<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fscanf.html"><span class="t-lines"><span>scanf</span><span>fscanf</span><span>sscanf</span><span>scanf_s</span><span>fscanf_s</span><span>sscanf_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span></span><span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从<span class="t-lc"><a href="c-io.html">stdin</a></span>、文件流或缓冲区读取格式化输入<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,191 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>fputc, putc</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_fputc skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">fputc, putc</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody class="t-dcl-rev">
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> fputc<span class="br0">(</span> <span class="kw4">int</span> ch, <a href="c-io.html"><span class="kw882">FILE</span></a> <span class="sy2">*</span>stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> putc<span class="br0">(</span> <span class="kw4">int</span> ch, <a href="c-io.html"><span class="kw882">FILE</span></a> <span class="sy2">*</span>stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>写入字符 <code>ch</code> 到给定输出流 <code>stream</code> 。 <span class="t-c"><span class="mw-geshi c source-c">putc<span class="br0">(</span><span class="br0">)</span></span></span> 可以实现为宏并对 <code>stream</code> 求值超过一次,故对应的参数决不应是有副效应的表达式。</p>
|
||||
<p>在内部,在写入前将字符转换为 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">unsigned</span> <span class="kw4">char</span></span></span> 。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>ch</td>
|
||||
<td>-</td>
|
||||
<td>要被写入的字符</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>输出流</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0_2">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>ch</td>
|
||||
<td>-</td>
|
||||
<td>要写入的字符</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>输出流</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>成功时,返回被写入字符。</p>
|
||||
<p>失败时,返回 <span class="t-lc"><a href="c-io.html">EOF</a></span> 并设置 <span class="t-lc">stream</span> 上的<i>错误</i>指示器(见 <span class="t-lc"><a href="c-io-ferror.html">ferror()</a></span> )。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<p>putc带错误检查</p>
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw4">int</span> ret_code <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
|
||||
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">char</span> c <span class="sy1">=</span> <span class="st0">'a'</span><span class="sy4">;</span> <span class="br0">(</span>ret_code <span class="sy3">!</span><span class="sy1">=</span> <a href="c-io.html"><span class="kw887">EOF</span></a><span class="br0">)</span> <span class="sy3">&&</span> <span class="br0">(</span>c <span class="sy3">!</span><span class="sy1">=</span> <span class="st0">'z'</span><span class="br0">)</span><span class="sy4">;</span> c<span class="sy2">++</span><span class="br0">)</span>
|
||||
ret_code <span class="sy1">=</span> putc<span class="br0">(</span>c, <a href="c-io.html"><span class="kw885">stdout</span></a><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="coMULTI">/* 测试是否抵达 EOF 。 */</span>
|
||||
<span class="kw1">if</span> <span class="br0">(</span>ret_code <span class="sy1">==</span> <a href="c-io.html"><span class="kw887">EOF</span></a><span class="br0">)</span>
|
||||
<span class="kw1">if</span> <span class="br0">(</span><a href="c-io-ferror.html"><span class="kw876">ferror</span></a><span class="br0">(</span><a href="c-io.html"><span class="kw885">stdout</span></a><span class="br0">)</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-io-perror.html"><span class="kw877">perror</span></a><span class="br0">(</span><span class="st0">"putc()"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">fprintf</span></a><span class="br0">(</span><a href="c-io.html"><span class="kw886">stderr</span></a>,<span class="st0">"putc() failed in file %s at line # %d<span class="es1">\n</span>"</span>, __FILE__,__LINE__<span class="sy2">-</span><span class="nu0">7</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-program-exit.html"><span class="kw488">exit</span></a><span class="br0">(</span><a href="c-program-EXIT_status.html"><span class="kw494">EXIT_FAILURE</span></a><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
putc<span class="br0">(</span><span class="st0">'<span class="es1">\n</span>'</span>, <a href="c-io.html"><span class="kw885">stdout</span></a><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw1">return</span> <a href="c-program-EXIT_status.html"><span class="kw493">EXIT_SUCCESS</span></a><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">abcdefghijklmnopqrstuvwxy</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.7.3 The fputc function (p: 331)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.7.7 The putc function (p: 333)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.7.3 The fputc function (p: 297)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.7.8 The putc function (p: 299)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.7.3 The fputc function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.7.8 The putc function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-putchar.html"><span class="t-lines"><span>putchar</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将一个字符写入 <code>stdout</code><br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,166 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>fputs</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_fputs skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">fputs</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody class="t-dcl-rev">
|
||||
<tr class="t-dcl t-until-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> fputs<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span>str, <a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-until-c99">(C99 前)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> fputs<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> str, <a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span><span class="kw4">restrict</span> stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>将以NULL结尾的字符串 <code>str</code> 的每个字符写入到输出流 <code>stream</code> ,如同通过重复执行 <span class="t-lc"><a href="c-io-fputc.html">fputc</a></span> 。</p>
|
||||
<p>不将 <code>str</code> 的空字符写入。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>str</td>
|
||||
<td>-</td>
|
||||
<td>要写入的空终止字符串</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>输出流</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>成功时,返回非负值。</p>
|
||||
<p>失败时,返回 <span class="t-lc"><a href="c-io.html">EOF</a></span> 并设置 <code>stream</code> 上的<i>错误</i>指示器(见 <span class="t-lc"><a href="c-io-ferror.html">ferror</a></span> )。</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h3>
|
||||
<p>相关函数 <span class="t-lc"><a href="c-io-puts.html">puts</a></span> 后附新换行符到输出,而 <code>fputs</code> 写入不修改的字符串。</p>
|
||||
<p>不同的实现返回不同的非负数:一些返回最后写入的字符,一些返回写入的字符数(或若字符串长于 INT_MAX 则为该值),一些简单地非负常量,例如零。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw4">int</span> rc <span class="sy1">=</span> fputs<span class="br0">(</span><span class="st0">"Hello World"</span>, <a href="c-io.html"><span class="kw886">stdout</span></a><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw1">if</span> <span class="br0">(</span>rc <span class="sy1">==</span> <a href="c-io.html"><span class="kw888">EOF</span></a><span class="br0">)</span>
|
||||
<a href="c-io-perror.html"><span class="kw878">perror</span></a><span class="br0">(</span><span class="st0">"fputs()"</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// POSIX 要求设置 errno</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">Hello World</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.7.4 The fputs function (p: 331-332)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.7.4 The fputs function (p: 297)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.7.4 The fputs function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fprintf.html"><span class="t-lines"><span>printf</span><span>fprintf</span><span>sprintf</span><span>snprintf</span><span>printf_s</span><span>fprintf_s</span><span>sprintf_s</span><span>snprintf_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span></span><span></span><span><span class="t-mark-rev t-since-c99">(C99)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>打印格式化输出到 <span class="t-lc"><a href="c-io.html">stdout</a></span> 、文件流或缓冲区<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-puts.html"><span class="t-lines"><span>puts</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将一个字符串写入 <code>stdout</code><br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fgets.html"><span class="t-lines"><span>fgets</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从文件流获取一个字符串<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,176 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>fputwc, putwc</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_fputwc skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">fputwc, putwc</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><wchar.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody class="t-dcl-rev">
|
||||
<tr class="t-dcl t-since-c95">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">wint_t fputwc<span class="br0">(</span> <span class="kw4">wchar_t</span> ch, <a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c95">(C95 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c95">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">wint_t putwc<span class="br0">(</span> <span class="kw4">wchar_t</span> ch, <a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c95">(C95 起)</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>写宽字符 <code>ch</code> 到给定的输出流 <code>stream</code> 。 <span class="t-c"><span class="mw-geshi c source-c">putwc<span class="br0">(</span><span class="br0">)</span></span></span> 可以实现为宏并可求值 <code>stream</code> 多于一次。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>ch</td>
|
||||
<td>-</td>
|
||||
<td>要写入的宽字符</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>输出流</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>成功时返回 <code>ch</code> 的副本。</p>
|
||||
<p>失败时,返回 <span class="t-c"><span class="mw-geshi c source-c">WEOF</span></span> 并设置 <code>stream</code> 上的<i>错误</i>指示器(见 <span class="t-lc"><a href="c-io-ferror.html">ferror()</a></span> )。</p>
|
||||
<p>若出现编码错误,则另外设置 <span class="t-lc"><a href="c-error-errno.html">errno</a></span> 为 <code>EILSEQ</code> 。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <locale.h></span>
|
||||
<span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
<span class="co2">#include <wchar.h></span>
|
||||
<span class="co2">#include <errno.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-locale-setlocale.html"><span class="kw900">setlocale</span></a><span class="br0">(</span><a href="c-locale-LC_categories.html"><span class="kw903">LC_ALL</span></a>, <span class="st0">"en_US.utf8"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw2">errno</span> <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
|
||||
<span class="kw1">if</span> <span class="br0">(</span>fputwc<span class="br0">(</span>L<span class="st0">'🍌'</span>, <a href="c-io.html"><span class="kw886">stdout</span></a><span class="br0">)</span> <span class="sy1">==</span> WEOF<span class="br0">)</span> <span class="br0">{</span>
|
||||
<span class="kw1">if</span> <span class="br0">(</span><span class="kw2">errno</span> <span class="sy1">==</span> <a href="c-error-errno_macros.html"><span class="kw432">EILSEQ</span></a><span class="br0">)</span>
|
||||
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">"Encoding error in fputwc."</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">else</span>
|
||||
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">"I/O error in fputwc."</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">return</span> <a href="c-program-EXIT_status.html"><span class="kw494">EXIT_FAILURE</span></a><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">🍌</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.29.3.3 The fputwc function (p: 422-423)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.29.3.8 The putwc function (p: 424)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.24.3.3 The fputwc function (p: 368)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.24.3.8 The putwc function (p: 370)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fputc.html"><span class="t-lines"><span>fputc</span><span>putc</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将一个字符写入文件流<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fputws.html"><span class="t-lines"><span>fputws</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c95">(C95)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将一个宽字符串写入文件流<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fgetwc.html"><span class="t-lines"><span>fgetwc</span><span>getwc</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c95">(C95)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从文件流获取一个宽字符<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,166 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>fputws</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_fputws skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">fputws</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><wchar.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody class="t-dcl-rev">
|
||||
<tr class="t-dcl t-since-c95 t-until-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> fputws<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">wchar_t</span> <span class="sy2">*</span>str, <a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c95">(C95 起)</span><br />
|
||||
<span class="t-mark-rev t-until-c99">(C99 前)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> fputws<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">wchar_t</span> <span class="sy2">*</span> <span class="kw4">restrict</span> str, <a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span> <span class="kw4">restrict</span> stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>写入来自空终止宽字符串 <code>str</code> 的每个宽字符到输出流 <code>stream</code> ,如同通过重复执行 <span class="t-lc"><a href="c-io-fputwc.html">fputwc</a></span> 。</p>
|
||||
<p>不写入来自 <code>str</code> 的终止宽字符。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>str</td>
|
||||
<td>-</td>
|
||||
<td>要写入的空终止宽字符串</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>输出流</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>成功时返回非负值。</p>
|
||||
<p>失败时,返回 <span class="t-lc"><a href="c-io.html">EOF</a></span> 并设置 <code>stream</code> 上的<i>错误</i>指示器(见 <span class="t-lc"><a href="c-io-ferror.html">ferror</a></span> )。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <locale.h></span>
|
||||
<span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <wchar.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-locale-setlocale.html"><span class="kw900">setlocale</span></a><span class="br0">(</span><a href="c-locale-LC_categories.html"><span class="kw903">LC_ALL</span></a>, <span class="st0">"en_US.utf8"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw4">int</span> rc <span class="sy1">=</span> fputws<span class="br0">(</span>L<span class="st0">"洗洗睡吧"</span>, <a href="c-io.html"><span class="kw886">stdout</span></a><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw1">if</span> <span class="br0">(</span>rc <span class="sy1">==</span> <a href="c-io.html"><span class="kw888">EOF</span></a><span class="br0">)</span>
|
||||
<a href="c-io-perror.html"><span class="kw878">perror</span></a><span class="br0">(</span><span class="st0">"fputws()"</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// POSIX 要求设置 errno</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">洗洗睡吧</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.29.3.4 The fputws function (p: 423)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.24.3.4 The fputws function (p: 368)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fputs.html"><span class="t-lines"><span>fputs</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将一个字符串写入文件流<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fwprintf.html"><span class="t-lines"><span>wprintf</span><span>fwprintf</span><span>swprintf</span><span>wprintf_s</span><span>fwprintf_s</span><span>swprintf_s</span><span>snwprintf_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c95">(C95)</span></span><span><span class="t-mark-rev t-since-c95">(C95)</span></span><span><span class="t-mark-rev t-since-c95">(C95)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>打印格式化宽字符输出到 <span class="t-lc"><a href="c-io.html">stdout</a></span> 、文件流或缓冲区<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><strong class="selflink"><span class="t-lines"><span>fputws</span></span></strong></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c95">(C95)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将一个宽字符串写入文件流<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fgetws.html"><span class="t-lines"><span>fgetws</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c95">(C95)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从文件流获取一个宽字符串<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,195 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>fread</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_fread skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">fread</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody class="t-dcl-rev">
|
||||
<tr class="t-dcl t-until-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><a href="c-types-size_t.html"><span class="kw100">size_t</span></a> fread<span class="br0">(</span> <span class="kw4">void</span> <span class="sy2">*</span>buffer, <a href="c-types-size_t.html"><span class="kw100">size_t</span></a> size, <a href="c-types-size_t.html"><span class="kw100">size_t</span></a> count,<br />
|
||||
<a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-until-c99">(C99 前)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><a href="c-types-size_t.html"><span class="kw100">size_t</span></a> fread<span class="br0">(</span> <span class="kw4">void</span> <span class="sy2">*</span><span class="kw4">restrict</span> buffer, <a href="c-types-size_t.html"><span class="kw100">size_t</span></a> size, <a href="c-types-size_t.html"><span class="kw100">size_t</span></a> count,<br />
|
||||
<a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span><span class="kw4">restrict</span> stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>从给定输入流 <code>stream</code> 读取至多 <code>count</code> 个对象到数组 <code>buffer</code> 中,如同以对每个对象调用 <code>size</code> 次 <span class="t-lc"><a href="c-io-fgetc.html">fgetc</a></span> ,并按顺序存储结果到转译为 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">unsigned</span> <span class="kw4">char</span></span></span> 数组的 <code>buffer</code> 中的相继位置。流的文件位置指示器前进读取的字符数。</p>
|
||||
<p>若出现错误,则流的文件位置指示器的结果值不确定。若读入部分的元素,则元素值不确定。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>buffer</td>
|
||||
<td>-</td>
|
||||
<td>指向要读取的数组中首个对象的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>size</td>
|
||||
<td>-</td>
|
||||
<td>每个对象的字节大小</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>count</td>
|
||||
<td>-</td>
|
||||
<td>要读取的对象数</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>读取来源的输入文件流</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>成功读取的对象数,若出现错误或文件尾条件,则可能小于 <code>count</code> 。</p>
|
||||
<p>若 <code>size</code> 或 <code>count</code> 为零,则 <code>fread</code> 返回零且不进行其他动作。</p>
|
||||
<p><code>fread</code> 不区别文件尾和错误,而调用者必须用 <span class="t-lc"><a href="c-io-feof.html">feof</a></span> 和 <span class="t-lc"><a href="c-io-ferror.html">ferror</a></span> 鉴别出现者为何。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
|
||||
<span class="kw2">enum</span> <span class="br0">{</span> SIZE <span class="sy1">=</span> <span class="nu0">5</span> <span class="br0">}</span><span class="sy4">;</span>
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw4">double</span> a<span class="br0">[</span>SIZE<span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span><span class="nu0">1</span>.,<span class="nu0">2</span>.,<span class="nu0">3</span>.,<span class="nu0">4</span>.,<span class="nu0">5</span>.<span class="br0">}</span><span class="sy4">;</span>
|
||||
<a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>fp <span class="sy1">=</span> <a href="c-io-fopen.html"><span class="kw819">fopen</span></a><span class="br0">(</span><span class="st0">"test.bin"</span>, <span class="st0">"wb"</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// 必须用二进制模式</span>
|
||||
<a href="c-io-fwrite.html"><span class="kw825">fwrite</span></a><span class="br0">(</span>a, <span class="kw4">sizeof</span> <span class="sy2">*</span>a, SIZE, fp<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// 写 double 的数组</span>
|
||||
<a href="c-io-fclose.html"><span class="kw822">fclose</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw4">double</span> b<span class="br0">[</span>SIZE<span class="br0">]</span><span class="sy4">;</span>
|
||||
fp <span class="sy1">=</span> <a href="c-io-fopen.html"><span class="kw819">fopen</span></a><span class="br0">(</span><span class="st0">"test.bin"</span>,<span class="st0">"rb"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-types-size_t.html"><span class="kw100">size_t</span></a> ret_code <span class="sy1">=</span> fread<span class="br0">(</span>b, <span class="kw4">sizeof</span> <span class="sy2">*</span>b, SIZE, fp<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// 读 double 的数组</span>
|
||||
<span class="kw1">if</span><span class="br0">(</span>ret_code <span class="sy1">==</span> SIZE<span class="br0">)</span> <span class="br0">{</span>
|
||||
<a href="c-io-puts.html"><span class="kw835">puts</span></a><span class="br0">(</span><span class="st0">"Array read successfully, contents: "</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">for</span><span class="br0">(</span><span class="kw4">int</span> n <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span> n <span class="sy1"><</span> SIZE<span class="sy4">;</span> <span class="sy2">++</span>n<span class="br0">)</span> <a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"%f "</span>, b<span class="br0">[</span>n<span class="br0">]</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-putchar.html"><span class="kw834">putchar</span></a><span class="br0">(</span><span class="st0">'<span class="es1">\n</span>'</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span> <span class="co1">// error handling</span>
|
||||
<span class="kw1">if</span> <span class="br0">(</span><a href="c-io-feof.html"><span class="kw876">feof</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="br0">)</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw850">printf</span></a><span class="br0">(</span><span class="st0">"Error reading test.bin: unexpected end of file<span class="es1">\n</span>"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span><a href="c-io-ferror.html"><span class="kw877">ferror</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span>
|
||||
<a href="c-io-perror.html"><span class="kw878">perror</span></a><span class="br0">(</span><span class="st0">"Error reading test.bin"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
<span class="br0">}</span>
|
||||
|
||||
<a href="c-io-fclose.html"><span class="kw822">fclose</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">Array read successfully, contents:
|
||||
1.000000 2.000000 3.000000 4.000000 5.000000</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.8.1 The fread function (p: 335)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.8.1 The fread function (p: 301)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.8.1 The fread function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fscanf.html"><span class="t-lines"><span>scanf</span><span>fscanf</span><span>sscanf</span><span>scanf_s</span><span>fscanf_s</span><span>sscanf_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span></span><span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从<span class="t-lc"><a href="c-io.html">stdin</a></span>、文件流或缓冲区读取格式化输入<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fgets.html"><span class="t-lines"><span>fgets</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从文件流获取一个字符串<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fwrite.html"><span class="t-lines"><span>fwrite</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>写入到文件<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,274 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>freopen, freopen_s</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_freopen skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">freopen, freopen_s</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody class="t-dcl-rev t-dcl-rev-num">
|
||||
<tr class="t-dcl-rev-aux">
|
||||
<td></td>
|
||||
<td rowspan="142">(1)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-until-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>freopen<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span>filename, <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span>mode,<br />
|
||||
<a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-until-c99">(C99 前)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>freopen<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> filename, <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> mode,<br />
|
||||
<a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span><span class="kw4">restrict</span> stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c">errno_t freopen_s<span class="br0">(</span><a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span><span class="kw4">restrict</span> <span class="sy2">*</span><span class="kw4">restrict</span> newstreamptr,<br /></span>
|
||||
<p> <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> filename, <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> mode,<br /></p>
|
||||
<a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span><span class="kw4">restrict</span> stream<span class="br0">)</span><span class="sy4">;</span></div>
|
||||
</td>
|
||||
<td>(2)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 首先,试图关闭与 <code>stream</code> 关联的文件,忽略任何错误。然后,若 <code>filename</code> 非空,则试图用 <code>mode</code> 打开 <code>filename</code> 所指定的文件,如同用 <span class="t-lc"><a href="c-io-fopen.html">fopen</a></span> ,然后将该文件与 <code>stream</code> 所指向的文件流关联。若 <code>filename</code> 为空指针,则函数试图重打开已与 <code>stream</code> 关联的文件(此情况下是否允许模式改变是实现定义的)。</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 同 <span class="t-v">(1)</span> ,除了以 <span class="t-lc">fopen_s</span> 中的方式处理 <code>mode</code> ,并将指向文件流的指针写入 <code>newstreamptr</code> ,还在运行时检测下列错误,并调用当前安装的<a href="c-error-set_constraint_handler_s.html">制约处理</a>函数:
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><code>newstreamptr</code> 是空指针</li>
|
||||
<li><code>stream</code> 是空指针</li>
|
||||
<li><code>mode</code> 是空指针</li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dd></dd>
|
||||
<dd>同所有边界检查函数, <code>freopen_s</code> 仅若实现定义了 <span class="t-c"><span class="mw-geshi c source-c">__STDC_LIB_EXT1__</span></span> ,且用户在包含 <code><stdio.h></code> 前定义 <span class="t-c"><span class="mw-geshi c source-c">__STDC_WANT_LIB_EXT1__</span></span> 为整数常量 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> 才保证可用。</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>filename</td>
|
||||
<td>-</td>
|
||||
<td>要关联到文件流的文件名</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>mode</td>
|
||||
<td>-</td>
|
||||
<td>确定文件访问模式的空终止字符串
|
||||
<table class="wikitable">
|
||||
<tr>
|
||||
<th>文件访问<br />
|
||||
模式字符串</th>
|
||||
<th>含义</th>
|
||||
<th>解释</th>
|
||||
<th>若文件已存在的动作</th>
|
||||
<th>若文件不存在的动作</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>"r"</code></td>
|
||||
<td>读</td>
|
||||
<td>打开文件以读取</td>
|
||||
<td>从头读</td>
|
||||
<td>打开失败</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>"w"</code></td>
|
||||
<td>写</td>
|
||||
<td>创建文件以写入</td>
|
||||
<td>销毁内容</td>
|
||||
<td>创建新文件</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>"a"</code></td>
|
||||
<td>后附</td>
|
||||
<td>后附到文件</td>
|
||||
<td>写到结尾</td>
|
||||
<td>创建新文件</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>"r+"</code></td>
|
||||
<td>读扩展</td>
|
||||
<td>打开文件以读/写</td>
|
||||
<td>从头读</td>
|
||||
<td>错误</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>"w+"</code></td>
|
||||
<td>写扩展</td>
|
||||
<td>创建文件以读/写</td>
|
||||
<td>销毁内容</td>
|
||||
<td>创建新文件</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>"a+"</code></td>
|
||||
<td>后附扩展</td>
|
||||
<td>打开文件以读/写</td>
|
||||
<td>写到结尾</td>
|
||||
<td>创建新文件</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>文件访问模式标签 <code>"b"</code> 可以可选地指定以二进制模式打开文件。此标签仅在 Windows 系统上生效。<br />
|
||||
在附加文件访问模式下,数据被写入到文件尾,而不考虑文件位置指示器的当前位置。</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>当文件以更新模式打开时( '+' 作为上述模式参数值列表的第二或第三个字符),访问流可以进行输入和输出。然而输出不应直接紧随输入,而中间无对 <span class="t-lc"><a href="c-io-fflush.html">fflush</a></span> 函数或对文件定位函数( <span class="t-lc"><a href="c-io-fseek.html">fseek</a></span> 、 <span class="t-lc"><a href="c-io-fsetpos.html">fsetpos</a></span> 或 <span class="t-lc"><a href="c-io-rewind.html">rewind</a></span> )的调用,且输入不应直接紧随输出,而中间无对文件定位函数的调用,除非输入操作遇到文件尾。在一些实现中,以更新模式打开(或创建)文本文件可能取代打开(或创建)二进制流。</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>文件访问模式标签 <code>"x"</code> 可以可选地后附于 "w" 或 "w+" 指定符。若文件存在,则此标签强制函数失败,而不重写它。<span class="t-mark-rev t-since-c11">(C11)</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>使用 <code>fopen_s</code> 或 <code>freopen_s</code> 时,任何以 "w" 或 "a" 创建的文件的文件访问许可禁止其他用户访问它。文件访问模式标签 <code>"u"</code> 可以可选地前附于任何以为 "w" 或 "a" 始的指定符,以启用默认的 <code>fopen</code> 许可。<span class="t-mark-rev t-since-c11">(C11)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>要修改的文件流</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>newstreamptr</td>
|
||||
<td>-</td>
|
||||
<td>指向函数存储结果所用指针的指针(输出参数)</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 成功时为 <code>stream</code> 值的副本,失败时为空指针。</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 成功时为零(并将 <code>stream</code> 值的副本写入 <code>*newstreamptr</code> ),失败时为非零(并写入空指针到 <code>*newstreamptr</code> ,除非 <code>newstreamptr</code> 自身为空指针)。</div>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">注解</span></h3>
|
||||
<p><code>freopen</code> 是一旦由 I/O 操作或 <span class="t-lc">fwide</span> 建立面向后,改变文件流窄/宽面向的唯一方式。</p>
|
||||
<p><code>freopen</code> 的 Microsoft CRT 版本在 <code>filename</code> 为空指针时不支持任何模式更改并将它当作错误(见<a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/freopen-wfreopen">文档</a>)。可行的替代方案是非标准函数 <a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/setmode"><code>_setmode()</code></a> 。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<p>下列代码重定向 <code>stdout</code> 到文件。</p>
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-io-puts.html"><span class="kw835">puts</span></a><span class="br0">(</span><span class="st0">"stdout is printed to console"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">if</span> <span class="br0">(</span>freopen<span class="br0">(</span><span class="st0">"redir.txt"</span>, <span class="st0">"w"</span>, <a href="c-io.html"><span class="kw886">stdout</span></a><span class="br0">)</span> <span class="sy1">==</span> <a href="c-types-NULL.html"><span class="kw103">NULL</span></a><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-io-perror.html"><span class="kw878">perror</span></a><span class="br0">(</span><span class="st0">"freopen() failed"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">return</span> <a href="c-program-EXIT_status.html"><span class="kw494">EXIT_FAILURE</span></a><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
<a href="c-io-puts.html"><span class="kw835">puts</span></a><span class="br0">(</span><span class="st0">"stdout is redirected to a file"</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// 写入 redir.txt</span>
|
||||
<a href="c-io-fclose.html"><span class="kw821">fclose</span></a><span class="br0">(</span><a href="c-io.html"><span class="kw886">stdout</span></a><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">stdout is printed to console</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.5.4 The freopen function (p: 307)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.5.2.2 The freopen_s function (p: 590)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.5.4 The freopen function (p: 272-273)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.5.4 The freopen function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fopen.html"><span class="t-lines"><span>fopen</span><span>fopen_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>打开文件<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fclose.html"><span class="t-lines"><span>fclose</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>关闭文件<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,664 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>scanf, fscanf, sscanf, scanf_s, fscanf_s, sscanf_s</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_fscanf skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">scanf, fscanf, sscanf, scanf_s, fscanf_s, sscanf_s</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody class="t-dcl-rev t-dcl-rev-num">
|
||||
<tr class="t-dcl-rev-aux">
|
||||
<td></td>
|
||||
<td rowspan="142">(1)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-until-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> scanf<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span>format, ... <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-until-c99">(C99 前)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> scanf<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> format, ... <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody></tbody>
|
||||
<tbody class="t-dcl-rev t-dcl-rev-num">
|
||||
<tr class="t-dcl-rev-aux">
|
||||
<td></td>
|
||||
<td rowspan="142">(2)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-until-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> fscanf<span class="br0">(</span> <a href="c-io.html"><span class="kw881">FILE</span></a> <span class="sy2">*</span>stream, <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span>format, ... <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-until-c99">(C99 前)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> fscanf<span class="br0">(</span> <a href="c-io.html"><span class="kw881">FILE</span></a> <span class="sy2">*</span><span class="kw4">restrict</span> stream, <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> format, ... <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody></tbody>
|
||||
<tbody class="t-dcl-rev t-dcl-rev-num">
|
||||
<tr class="t-dcl-rev-aux">
|
||||
<td></td>
|
||||
<td rowspan="142">(3)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-until-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> sscanf<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span>buffer, <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span>format, ... <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-until-c99">(C99 前)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> sscanf<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> buffer, <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> format, ... <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> scanf_s<span class="br0">(</span><span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> format, ...<span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(4)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> fscanf_s<span class="br0">(</span><a href="c-io.html"><span class="kw881">FILE</span></a> <span class="sy2">*</span><span class="kw4">restrict</span> stream, <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> format, ...<span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(5)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> sscanf_s<span class="br0">(</span><span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> buffer, <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span><span class="kw4">restrict</span> format, ...<span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(6)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>从各种资源读取数据,按照 <code>format</code> 转译,并将结果存储到指定位置。</p>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 从 <span class="t-lc"><a href="c-io.html">stdin</a></span> 读取数据</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 从文件流 <code>stream</code> 读取数据</div>
|
||||
<div class="t-li1"><span class="t-li">3)</span> 从空终止字符串 <code>buffer</code> 读取数据。抵达字符串结尾等价于 <code>fscanf</code> 的抵达文件尾条件</div>
|
||||
<div class="t-li1"><span class="t-li">4-6)</span> 同 <span class="t-v">(1-3)</span> ,除了 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">%</span>c</span></span> 、 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">%</span>s</span></span> 及 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">%</span><span class="br0">[</span></span></span> 转换指定符要求二个参数(通常的指针和指示获取用数组大小的 <span class="t-lc">rsize_t</span> 类型的值,在以 %c 读取单个字符时可以为 1 ),并在运行时检测下列错误,并调用当前安装的<a href="c-error-set_constraint_handler_s.html">制约处理</a>函数:
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>任何指针类型的参数是为空指针</li>
|
||||
<li><code>format</code> 、 <code>stream</code> 或 <code>buffer</code> 为空指针</li>
|
||||
<li> %c 、 %s 或 %[ 会写入的字符数,加上空终止字符,要超过提供给这些转换指定符的第二个( rsize_t )参数</li>
|
||||
<li>可选,任何其他可检测错误,例如未知转换指定符</li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dd></dd>
|
||||
<dd>同所有边界检查函数, <code>scanf_s, fscanf_s, sscanf_s</code> 仅若实现定义了 <span class="t-c"><span class="mw-geshi c source-c">__STDC_LIB_EXT1__</span></span> ,且用户在包含 <code><stdio.h></code> 前定义 <span class="t-c"><span class="mw-geshi c source-c">__STDC_WANT_LIB_EXT1__</span></span> 为整数常量 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> 才保证可用。</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>要读取的输入文件流</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>buffer</td>
|
||||
<td>-</td>
|
||||
<td>指向要读取的空终止字符串的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>format</td>
|
||||
<td>-</td>
|
||||
<td>指向指定读取输入方式的空终止字符串的指针。
|
||||
<p>格式字符串由下列内容组成</p>
|
||||
<ul>
|
||||
<li>非空白多字节字符,除了 <code><b>%</b></code> :每个格式字符串中的这种字符处理来自输入流的准确同一字符,或若它与流的下个字符比较不相等则导致函数失败。</li>
|
||||
<li>空白符:任何格式字符串中的单个空白符处理所有来自输入的可用连续空白符(如同通过于循环中调用 <a href="c-string-byte-isspace.html"><tt>isspace</tt></a> 确定)。注意格式字符串中 <span class="t-c"><span class="mw-geshi c source-c"><span class="st0">"<span class="es1">\n</span>"</span></span></span> 、 <span class="t-c"><span class="mw-geshi c source-c"><span class="st0">" "</span></span></span> 、 <span class="t-c"><span class="mw-geshi c source-c"><span class="st0">"<span class="es1">\t</span><span class="es1">\t</span>"</span></span></span> 或其他空白无区别。</li>
|
||||
<li>转换说明:每个转换说明拥有下列格式:</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>引入用 <code><b>%</b></code> 字符</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><span class="t-mark">(可选)</span>赋值抑制字符 <code><b>*</b></code> 。若存在此选项,则此函数不将结果赋值给任何接收用参数。</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><span class="t-mark">(可选)</span>指定<i>最大域宽</i>的整数数字(大于零),即函数进行在当前转换说明所指定的转换时,允许处理的最大字符数。注意若不提供宽度,则 %s 和 %[ 可能导致缓冲区溢出。</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><span class="t-mark">(可选)</span>指定接收参数大小的<i>长度修饰符</i>,即实际目标类型。这影响转换准确性和溢出规则。默认目标类型对每个转换类型不同(见下表)。</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>转换格式说明符</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<p>下列格式说明符可用:</p>
|
||||
<table class="wikitable" style="text-align:center; font-size:85%; max-width:90em;">
|
||||
<tr>
|
||||
<th rowspan="1">转换<br />
|
||||
说明符</th>
|
||||
<th rowspan="1">解释</th>
|
||||
<th colspan="9">参数类型</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="2" style="text-align:right; font-weight:normal;">
|
||||
<div style="display:inline-block; vertical-align:middle; text-align:center"><b>长度修饰符 →</b></div>
|
||||
</th>
|
||||
<th><code>hh</code>
|
||||
<p><span class="t-mark-rev t-since-c99">(C99)</span></p>
|
||||
</th>
|
||||
<th><code>h</code></th>
|
||||
<th style="font-weight:normal;">(无)</th>
|
||||
<th><code><b>l</b></code></th>
|
||||
<th><code><b>ll</b></code>
|
||||
<p><span class="t-mark-rev t-since-c99">(C99)</span></p>
|
||||
</th>
|
||||
<th><code><b>j</b></code>
|
||||
<p><span class="t-mark-rev t-since-c99">(C99)</span></p>
|
||||
</th>
|
||||
<th><code><b>z</b></code>
|
||||
<p><span class="t-mark-rev t-since-c99">(C99)</span></p>
|
||||
</th>
|
||||
<th><code><b>t</b></code>
|
||||
<p><span class="t-mark-rev t-since-c99">(C99)</span></p>
|
||||
</th>
|
||||
<th><code><b>L</b></code></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>%</code></th>
|
||||
<td style="text-align:left;">匹配字面 <code><b>%</b></code> 。</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>c</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>匹配一个<b>字符</b>或<b>字符</b>的序列</dd>
|
||||
</dl>
|
||||
<p>若使用了宽度说明符,则匹配准确的<i>宽度</i>个字符(该参数必须是指向有充足空间的数组的指针)。不同于 %s 和 %[ ,它不会在数组后附加空字符。</p>
|
||||
</td>
|
||||
<td rowspan="3" style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td rowspan="3" style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td rowspan="3">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">char</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="3">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">wchar_t</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="3" style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td rowspan="3" style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td rowspan="3" style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td rowspan="3" style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td rowspan="3" style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>s</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>匹配非空白字符的序列(一个<b>字符串</b>)</dd>
|
||||
</dl>
|
||||
<p>若使用宽度说明符,则至多匹配<i>宽度</i>个字符,或匹配到首个提前出现的空白符前。总是在匹配的字符后存储一个空字符(故参数数组必须有至少<i>宽度 +1</i> 个字符的空间)。</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>[</code><span class="t-spar">集合</span><code>]</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>匹配一个来自 <span class="t-spar">集合</span> 的字符的非空字符序列。</dd>
|
||||
</dl>
|
||||
<p>若集合的首字符是 <code>^</code> ,则匹配所有不在集合中的字符。若集合以 <code>]</code> 或 <code>^]</code> 开始,则 <code>]</code> 字符亦被包含入集合。在扫描集合的非最初位置的字符 <code>-</code> 是否可以指示范围,如 <code>[0-9]</code> ,是实现定义的。若使用宽度说明符,则最多匹配到<i>宽度</i>。总是在匹配的字符后存储一个空字符(故参数数组必须有至少<i>宽度 +1</i> 个字符的空间)。</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>d</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>匹配一个<b>十进制整数</b>。</dd>
|
||||
</dl>
|
||||
<p>该数的格式同 <a href="c-string-byte-strtol.html"><tt>strtol()</tt></a> 以值 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">10</span></span></span> 为 <code>base</code> 时所期望者</p>
|
||||
</td>
|
||||
<td rowspan="6">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">signed</span> <span class="kw4">char</span><span class="sy2">*</span></span></span> 或 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">unsigned</span> <span class="kw4">char</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="6">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">signed</span> <span class="kw4">short</span><span class="sy2">*</span></span></span> 或 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">unsigned</span> <span class="kw4">short</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="6">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">signed</span> <span class="kw4">int</span><span class="sy2">*</span></span></span> 或 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">unsigned</span> <span class="kw4">int</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="6">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">signed</span> <span class="kw4">long</span><span class="sy2">*</span></span></span> 或 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">unsigned</span> <span class="kw4">long</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="6">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">signed</span> <span class="kw4">long</span> <span class="kw4">long</span><span class="sy2">*</span></span></span> 或 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">unsigned</span> <span class="kw4">long</span> <span class="kw4">long</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="6">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><a href="c-types-integer.html"><span class="kw118">intmax_t</span></a><span class="sy2">*</span></span></span> 或 <span class="t-c"><span class="mw-geshi c source-c"><a href="c-types-integer.html"><span class="kw132">uintmax_t</span></a><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="6">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><a href="c-types-size_t.html"><span class="kw100">size_t</span></a><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="6">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><a href="c-types-ptrdiff_t.html"><span class="kw101">ptrdiff_t</span></a><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="6" style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>i</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>匹配一个<b>整数</b>。</dd>
|
||||
</dl>
|
||||
<p>该数的格式同 <a href="c-string-byte-strtol.html"><tt>strtol()</tt></a> 以值 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> 为 <code>base</code> 时所期望者(基底以首个分析的字符确定)</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>u</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>匹配一个无符号<b>十进制整数</b>。</dd>
|
||||
</dl>
|
||||
<p>该数的格式同 <a href="c-string-byte-strtoul.html"><tt>strtoul()</tt></a> 以值 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">10</span></span></span> 为 <code>base</code> 参数时所期望者。</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>o</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>匹配一个无符号<b>八进制数</b>。</dd>
|
||||
</dl>
|
||||
<p>该数的格式同 <a href="c-string-byte-strtoul.html"><tt>strtoul()</tt></a> 以值 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">8</span></span></span> 为 <code>base</code> 参数时所期望者。</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>x</code>, <code>X</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>匹配一个无符号<b>十六进制整数</b>。</dd>
|
||||
</dl>
|
||||
<p>该数的格式同 <a href="c-string-byte-strtoul.html"><tt>strtoul()</tt></a> 以值 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">16</span></span></span> 为 <code>base</code> 参数时所期望者。</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>n</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>返回<b>迄今读取的字符数</b>。</dd>
|
||||
</dl>
|
||||
<p>不消耗输出。不增加赋值计数。若此说明符拥有赋值抑制运算符,则行为未定义。</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>a</code>, <code>A</code><span class="t-mark-rev t-since-c99">(C99)</span><br />
|
||||
<code>e</code>, <code>E</code><br />
|
||||
<code>f</code>, <code>F</code><br />
|
||||
<code>g</code>, <code>G</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>匹配一个<b>浮点数</b>。</dd>
|
||||
</dl>
|
||||
<p>该数的格式同 <a href="c-string-byte-strtof.html"><tt>strtof()</tt></a> 所期望者。</p>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">float</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">double</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">long</span> <span class="kw4">double</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>p</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>匹配定义一个<b>指针</b>的实现定义的字符序列。</dd>
|
||||
</dl>
|
||||
<p><code>printf</code> 系列函数应该用 <code><b>%p</b></code> 格式说明符产生同样的序列。</p>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">void</span><span class="sy2">**</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>对于每个异于 <code>n</code> 的转换说明符,不超过任何指定域宽,且要么是转换说明符所准确期待,要么是其所期待的前缀的最长输入字符序列,即是从流中消耗的内容。此消耗序列后的首个字符若存在,则保持未读取。若被消耗序列长度为零,或被消耗序列不能转换成上面所指定的项目,则发生匹配失败,除非遇到文件尾、编码错误,或阻止从流输入的读取错误,此情况下此为输入失败。</p>
|
||||
<p>所有异于 <code>[</code> 、 <code>c</code> 和 <code>n</code> 的转换说明符,在尝试分析输入前消耗并舍弃所有前导空白字符(如同以调用 <a href="c-string-byte-isspace.html"><tt>isspace</tt></a> 来确定)。这些被消耗的字符不计入指定的最大域宽。</p>
|
||||
<p>转换说明符 <code>lc</code> 、 <code>ls</code> 和 <code>l[</code> 进行多字节到宽字符转换,如同如同在转换首字符前,通过用初始化到零的 <a href="c-string-multibyte-mbstate_t.html"><tt>mbstate_t</tt></a> 对象调用 <a href="c-string-multibyte-mbrtowc.html"><tt>mbrtowc()</tt></a> 。</p>
|
||||
<p>转换说明符 <code>s</code> 与 <code>[</code> 始终在匹配字符之后存储一个空字符。目标数组的大小必须至少比指定域宽大一。</p>
|
||||
<p><a href="c-types-integer.html">定宽整数类型</a>( <code>int8_t</code> 等)的正确的转换说明定义于头文件 <a href="c-types-integer.html"><inttypes.h></a> (虽然 <a href="c-types-integer.html"><tt>SCNdMAX</tt></a> 、 <a href="c-types-integer.html"><tt>SCNuMAX</tt></a> 等就是 <code>%jd</code> 、 <code>%ju</code> 等的别名)。</p>
|
||||
<p>在每个转换说明符后有一个<a href="c-language-eval_order.html">序列点</a>;这允许存储多个域到同一“池”变量中。</p>
|
||||
<p>在分析以无数字指数为结尾的不完整浮点值,如以转换说明符 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">%</span>f</span></span> 分析 <span class="t-c"><span class="mw-geshi c source-c"><span class="st0">"100er"</span></span></span> 时,消耗序列 <span class="t-c"><span class="mw-geshi c source-c"><span class="st0">"100e"</span></span></span> (可能为合法浮点数的最长前缀),并导致匹配错误(被消耗序列不能转换成浮点数),而留下 <span class="t-c"><span class="mw-geshi c source-c"><span class="st0">"r"</span></span></span> 。某些既存实现不遵守此规则并回滚,通过消耗 <span class="t-c"><span class="mw-geshi c source-c"><span class="st0">"100"</span></span></span> 而留下 <span class="t-c"><span class="mw-geshi c source-c"><span class="st0">"er"</span></span></span> ,例如 <a rel="nofollow" class="external text" href="https://sourceware.org/bugzilla/show_bug.cgi?id=1765">glibc 漏洞 1765</a> 。</p>
|
||||
<p>若转换指定非法,则行为未定义。</p>
|
||||
<p><br /></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>...</td>
|
||||
<td>-</td>
|
||||
<td>接收用参数</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<div class="t-li1"><span class="t-li">1-3)</span> 成功赋值的接收参数的数量(可以为零,在首个接收用参数赋值前匹配失败的情况下),或者若输入在首个接收用参数赋值前发生失败,则为<span class="t-lc"><a href="c-io.html">EOF</a></span>。</div>
|
||||
<div class="t-li1"><span class="t-li">4-6)</span> 同 <span class="t-v">(1-3)</span> ,除了若有运行时制约违规,亦返回 <span class="t-lc"><a href="c-io.html">EOF</a></span> 。</div>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h3>
|
||||
<p>因为多数转换指定符首先消耗掉所有连续空白符,如下的代码</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1">scanf<span class="br0">(</span><span class="st0">"%d"</span>, <span class="sy3">&</span>a<span class="br0">)</span><span class="sy4">;</span>
|
||||
scanf<span class="br0">(</span><span class="st0">"%d"</span>, <span class="sy3">&</span>b<span class="br0">)</span><span class="sy4">;</span></pre></div>
|
||||
</div>
|
||||
<p>将读取在不同行上(第二个 %d 会消耗第一个剩下的换行符)或同一行由空格或制表符分隔(第二个 %d 会消耗空格或制表符)的整数。</p>
|
||||
<p>不消耗前导空白符的转换指定符,如 %c ,可以通过在格式字符串中前置一个空白符令它如此:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1">scanf<span class="br0">(</span><span class="st0">"%d"</span>, <span class="sy3">&</span>a<span class="br0">)</span><span class="sy4">;</span>
|
||||
scanf<span class="br0">(</span><span class="st0">" %c"</span>, <span class="sy3">&</span>c<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// 消耗 %d 后的所有后继空白符,然后读一个 char</span></pre></div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#define __STDC_WANT_LIB_EXT1__ 1</span>
|
||||
<span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stddef.h></span>
|
||||
<span class="co2">#include <locale.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw4">int</span> i, j<span class="sy4">;</span>
|
||||
<span class="kw4">float</span> x, y<span class="sy4">;</span>
|
||||
<span class="kw4">char</span> str1<span class="br0">[</span><span class="nu0">10</span><span class="br0">]</span>, str2<span class="br0">[</span><span class="nu0">4</span><span class="br0">]</span><span class="sy4">;</span>
|
||||
<span class="kw4">wchar_t</span> warr<span class="br0">[</span><span class="nu0">2</span><span class="br0">]</span><span class="sy4">;</span>
|
||||
<a href="c-locale-setlocale.html"><span class="kw898">setlocale</span></a><span class="br0">(</span><a href="c-locale-LC_categories.html"><span class="kw901">LC_ALL</span></a>, <span class="st0">"en_US.utf8"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw4">char</span> input<span class="br0">[</span><span class="br0">]</span> <span class="sy1">=</span> <span class="st0">"25 54.32E-1 Thompson 56789 0123 56ß水"</span><span class="sy4">;</span>
|
||||
<span class="coMULTI">/* 按下列分析:
|
||||
%d :整数
|
||||
%f :浮点值
|
||||
%9s :最多有 9 个非空白符的字符串
|
||||
%2d : 2 位的整数(数位 5 和 6 )
|
||||
%f :浮点值(数位 7 、 8 、 9)
|
||||
%*d :不存储于任何位置的整数
|
||||
' ' :所有连续空白符
|
||||
%3[0-9] :至多有 3 个十进制数字的字符串(数位 5 和 6 )
|
||||
%2lc :二个宽字符,使用多字节到宽转换 */</span>
|
||||
<span class="kw4">int</span> ret <span class="sy1">=</span> sscanf<span class="br0">(</span>input, <span class="st0">"%d%f%9s%2d%f%*d %3[0-9]%2lc"</span>,
|
||||
<span class="sy3">&</span>i, <span class="sy3">&</span>x, str1, <span class="sy3">&</span>j, <span class="sy3">&</span>y, str2, warr<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<a href="c-io-fprintf.html"><span class="kw848">printf</span></a><span class="br0">(</span><span class="st0">"Converted %d fields:<span class="es1">\n</span>i = %d<span class="es1">\n</span>x = %f<span class="es1">\n</span>str1 = %s<span class="es1">\n</span>"</span>
|
||||
<span class="st0">"j = %d<span class="es1">\n</span>y = %f<span class="es1">\n</span>str2 = %s<span class="es1">\n</span>"</span>
|
||||
<span class="st0">"warr[0] = U+%x warr[1] = U+%x<span class="es1">\n</span>"</span>,
|
||||
ret, i, x, str1, j, y, str2, warr<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span>, warr<span class="br0">[</span><span class="nu0">1</span><span class="br0">]</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="co2">#ifdef __STDC_LIB_EXT1__</span>
|
||||
<span class="kw4">int</span> n <span class="sy1">=</span> sscanf_s<span class="br0">(</span>input, <span class="st0">"%d%f%s"</span>, <span class="sy3">&</span>i, <span class="sy3">&</span>x, str1, <span class="br0">(</span>rsize_t<span class="br0">)</span><span class="kw4">sizeof</span> str1<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="co1">// 写 25 到 i , 5.432 到 x , 9 个字节 "thompson\0" 到 str1 ,和 3 到 n 。</span>
|
||||
<span class="co2">#endif</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">Converted 7 fields:
|
||||
i = 25
|
||||
x = 5.432000
|
||||
str1 = Thompson
|
||||
j = 56
|
||||
y = 789.000000
|
||||
str2 = 56
|
||||
warr[0] = U+df warr[1] = U+6c34</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.6.2 The fscanf function (p: 317-324)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.6.4 The scanf function (p: 325)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.6.7 The sscanf function (p: 326)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.5.3.2 The fscanf_s function (p: 592-593)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.5.3.4 The scanf_s function (p: 594)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.5.3.7 The sscanf_s function (p: 596)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.6.2 The fscanf function (p: 282-289)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.6.4 The scanf function (p: 290)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.6.7 The sscanf function (p: 291)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.6.2 The fscanf function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.6.4 The scanf function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.6.6 The sscanf function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-vfscanf.html"><span class="t-lines"><span>vscanf</span><span>vfscanf</span><span>vsscanf</span><span>vscanf_s</span><span>vfscanf_s</span><span>vsscanf_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c99">(C99)</span></span><span><span class="t-mark-rev t-since-c99">(C99)</span></span><span><span class="t-mark-rev t-since-c99">(C99)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从 <span class="t-lc"><a href="c-io.html">stdin</a></span> 、文件流或缓冲区读取格式化输入<br />
|
||||
使用可变参数列表<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fgets.html"><span class="t-lines"><span>fgets</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>从文件流获取一个字符串<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fprintf.html"><span class="t-lines"><span>printf</span><span>fprintf</span><span>sprintf</span><span>snprintf</span><span>printf_s</span><span>fprintf_s</span><span>sprintf_s</span><span>snprintf_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span></span><span></span><span><span class="t-mark-rev t-since-c99">(C99)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>打印格式化输出到 <span class="t-lc"><a href="c-io.html">stdout</a></span> 、文件流或缓冲区<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,196 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>fseek</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_fseek skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">fseek</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> fseek<span class="br0">(</span> <a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>stream, <span class="kw4">long</span> offset, <span class="kw4">int</span> origin <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>设置文件流 <code>stream</code> 的文件位置指示器为 <code>offset</code> 所指向的值。</p>
|
||||
<p>若 <code>stream</code> 以二进制模式打开,则新位置准确地是文件起始后(若 <code>origin</code> 为 <span class="t-lc"><a href="c-io.html">SEEK_SET</a></span> )或当前文件位置后(若 <code>origin</code> 为 <span class="t-lc"><a href="c-io.html">SEEK_CUR</a></span> ),或文件结尾后(若 <code>origin</code> 为 <span class="t-lc"><a href="c-io.html">SEEK_END</a></span> )的 <code>offset</code> 字节。不要求二进制流支持 <span class="t-lc"><a href="c-io.html">SEEK_END</a></span> ,尤其是是否输出附加的空字节。</p>
|
||||
<p>若 <code>stream</code> 以文本模式打开,则仅有的受支持 <code>offset</code> 值为零(可用于任何 <code>origin</code> )和先前在关联到同一个文件的流上对 <span class="t-lc"><a href="c-io-ftell.html">ftell</a></span> 的调用的返回值(仅可用于 <span class="t-lc"><a href="c-io.html">SEEK_SET</a></span> 的 <code>origin</code> )。</p>
|
||||
<p>若 <code>stream</code> 为宽面向,则一同应用对文本和二进制流的限制(允许 <span class="t-lc"><a href="c-io-ftell.html">ftell</a></span> 的结果与 SEEK_SET 一同使用,并允许零 offset 以 SEEK_SET 和 SEEK_CUR 但非 SEEK_END 为基准)。</p>
|
||||
<p>除了更改文件位置指示器, <code>fseek</code> 还撤销 <span class="t-lc"><a href="c-io-ungetc.html">ungetc</a></span> 的效果并清除文件尾状态,若可应用。</p>
|
||||
<p>若发生读或写错误,则设置流的错误指示器( <span class="t-lc"><a href="c-io-ferror.html">ferror</a></span> )而不影响文件位置。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>要修改的文件流</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>offset</td>
|
||||
<td>-</td>
|
||||
<td>相对 origin 迁移的字符数</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>origin</td>
|
||||
<td>-</td>
|
||||
<td><code>offset</code> 所加上的位置。它能拥有下列值之一: <span class="t-lc"><a href="c-io.html">SEEK_SET</a></span> 、 <span class="t-lc"><a href="c-io.html">SEEK_CUR</a></span> 、 <span class="t-lc"><a href="c-io.html">SEEK_END</a></span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>成功时为 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> ,否则为非零。</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">注解</span></h3>
|
||||
<p>在巡位到宽流的非结尾位置后,下个对任意输出函数的调用可能令剩下的文件内容未定义,例如通过输出一个长度不同的多字节序列。</p>
|
||||
<p>对于文本流, <code>offset</code> 仅有的合法值是 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> (可应用于任意 <code>origin</code> )和先前 <span class="t-lc"><a href="c-io-ftell.html">ftell</a></span> 调用的返回值(仅可应用于 <code>SEEK_SET</code> )。</p>
|
||||
<p>POSIX 允许在文件尾之后巡位。若在此巡位后进行输出,则任何间隙中的读取将返回零字节。在文件系统支持的场合,这会创建一个<i>稀疏文件</i>。</p>
|
||||
<p>POSIX 亦要求 fseek 先进行 <span class="t-lc"><a href="c-io-fflush.html">fflush</a></span> ,若有任何未写入数据(但是否恢复迁移状态是实现定义的)。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<p>fseek 带错误检查</p>
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="co1">// 准备浮点值的数组。</span>
|
||||
<span class="co2">#define SIZE 5</span>
|
||||
<span class="kw4">double</span> A<span class="br0">[</span>SIZE<span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span><span class="nu0">1</span>.,<span class="nu0">2</span>.,<span class="nu0">3</span>.,<span class="nu0">4</span>.,<span class="nu0">5</span>.<span class="br0">}</span><span class="sy4">;</span>
|
||||
<span class="co1">// 写入数组到文件。</span>
|
||||
<a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span> fp <span class="sy1">=</span> <a href="c-io-fopen.html"><span class="kw819">fopen</span></a><span class="br0">(</span><span class="st0">"test.bin"</span>, <span class="st0">"wb"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fwrite.html"><span class="kw826">fwrite</span></a><span class="br0">(</span>A,<span class="kw4">sizeof</span><span class="br0">(</span><span class="kw4">double</span><span class="br0">)</span>,SIZE,fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fclose.html"><span class="kw822">fclose</span></a> <span class="br0">(</span>fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="co1">// 读浮点值入数组 B。</span>
|
||||
<span class="kw4">double</span> B<span class="br0">[</span>SIZE<span class="br0">]</span><span class="sy4">;</span>
|
||||
fp <span class="sy1">=</span> <a href="c-io-fopen.html"><span class="kw819">fopen</span></a><span class="br0">(</span><span class="st0">"test.bin"</span>,<span class="st0">"rb"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="co1">// 设置文件位置指示器到第三个浮点值之前。</span>
|
||||
<span class="kw1">if</span> <span class="br0">(</span>fseek<span class="br0">(</span>fp,<span class="kw4">sizeof</span><span class="br0">(</span><span class="kw4">double</span><span class="br0">)</span><span class="sy2">*</span><span class="nu0">2L</span>,<a href="c-io.html"><span class="kw895">SEEK_SET</span></a><span class="br0">)</span> <span class="sy3">!</span><span class="sy1">=</span> <span class="nu0">0</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-io-perror.html"><span class="kw878">perror</span></a><span class="br0">(</span><span class="st0">"fseek()"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw852">fprintf</span></a><span class="br0">(</span><a href="c-io.html"><span class="kw887">stderr</span></a>,<span class="st0">"fseek() failed in file %s at line # %d<span class="es1">\n</span>"</span>, __FILE__,__LINE__<span class="sy2">-</span><span class="nu0">5</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-program-exit.html"><span class="kw488">exit</span></a><span class="br0">(</span><a href="c-program-EXIT_status.html"><span class="kw494">EXIT_FAILURE</span></a><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
|
||||
<span class="kw4">int</span> ret_code <span class="sy1">=</span> <a href="c-io-fread.html"><span class="kw825">fread</span></a><span class="br0">(</span>B,<span class="kw4">sizeof</span><span class="br0">(</span><span class="kw4">double</span><span class="br0">)</span>,<span class="nu0">1</span>,fp<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// 读取一个浮点值</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"%.1f<span class="es1">\n</span>"</span>, B<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// 打印一个浮点值</span>
|
||||
|
||||
<a href="c-io-fclose.html"><span class="kw822">fclose</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">return</span> <a href="c-program-EXIT_status.html"><span class="kw493">EXIT_SUCCESS</span></a><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">3.0</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.9.2 The fseek function (p: 336-337)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.9.2 The fseek function (p: 302-303)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.9.2 The fseek function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fsetpos.html"><span class="t-lines"><span>fsetpos</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将文件位置指示器移动到文件中的指定位置<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fgetpos.html"><span class="t-lines"><span>fgetpos</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>获取文件位置指示器<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-ftell.html"><span class="t-lines"><span>ftell</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>返回当前的文件位置指示值<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-rewind.html"><span class="t-lines"><span>rewind</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将文件位置指示器移动到文件首<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,190 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>fsetpos</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_fsetpos skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">fsetpos</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> fsetpos<span class="br0">(</span> <a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>stream, <span class="kw4">const</span> <a href="c-io.html"><span class="kw884">fpos_t</span></a> <span class="sy2">*</span>pos <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>按照 <code>pos</code> 所指向的值,设置文件流 <code>stream</code> 的文件位置指示器和多字节分析状态(若存在)。</p>
|
||||
<p>除了建立新的分析状态和位置,调用此函数还会撤销 <span class="t-lc"><a href="c-io-ungetc.html">ungetc</a></span> 的效果,并若设置了文件尾状态则清除之。</p>
|
||||
<p>若读或写出现错误,则设置流的错误指示器( <span class="t-lc"><a href="c-io-ferror.html">ferror</a></span> )。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>要修改的文件流</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>pos</td>
|
||||
<td>-</td>
|
||||
<td>指向 <span class="t-c"><span class="mw-geshi c source-c"><a href="c-io.html"><span class="kw884">fpos_t</span></a></span></span> 对象的指针,用作文件位置指示器的新值</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>成功时为 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> ,否则为非零值。</p>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h3>
|
||||
<p>在寻位到宽流的非结尾位置后,下个对任何输出函数的调用可能使剩下的文件内容未定义,例如通过输出不同长度的多字节序列。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<p>fsetpos 带错误检查</p>
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="coMULTI">/* 准备一个浮点值的数组。 */</span>
|
||||
<span class="co2">#define SIZE 5</span>
|
||||
<span class="kw4">double</span> A<span class="br0">[</span>SIZE<span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span><span class="nu0">1</span>.,<span class="nu0">2</span>.,<span class="nu0">3</span>.,<span class="nu0">4</span>.,<span class="nu0">5</span>.<span class="br0">}</span><span class="sy4">;</span>
|
||||
<span class="coMULTI">/* 写数组到文件。 */</span>
|
||||
<a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span> fp <span class="sy1">=</span> <a href="c-io-fopen.html"><span class="kw819">fopen</span></a><span class="br0">(</span><span class="st0">"test.bin"</span>, <span class="st0">"wb"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fwrite.html"><span class="kw826">fwrite</span></a><span class="br0">(</span>A,<span class="kw4">sizeof</span><span class="br0">(</span><span class="kw4">double</span><span class="br0">)</span>,SIZE,fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fclose.html"><span class="kw822">fclose</span></a> <span class="br0">(</span>fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="coMULTI">/* 读取浮点值到数组B。 */</span>
|
||||
<span class="kw4">double</span> B<span class="br0">[</span>SIZE<span class="br0">]</span><span class="sy4">;</span>
|
||||
fp <span class="sy1">=</span> <a href="c-io-fopen.html"><span class="kw819">fopen</span></a><span class="br0">(</span><span class="st0">"test.bin"</span>,<span class="st0">"rb"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io.html"><span class="kw884">fpos_t</span></a> pos<span class="sy4">;</span>
|
||||
<span class="kw1">if</span> <span class="br0">(</span><a href="c-io-fgetpos.html"><span class="kw872">fgetpos</span></a><span class="br0">(</span>fp,<span class="sy3">&</span>pos<span class="br0">)</span> <span class="sy3">!</span><span class="sy1">=</span> <span class="nu0">0</span><span class="br0">)</span> <span class="coMULTI">/* 当前位置:文件起始 */</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-io-perror.html"><span class="kw878">perror</span></a><span class="br0">(</span><span class="st0">"fgetpos()"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw852">fprintf</span></a><span class="br0">(</span><a href="c-io.html"><span class="kw887">stderr</span></a>,<span class="st0">"fgetpos() failed in file %s at line # %d<span class="es1">\n</span>"</span>, __FILE__,__LINE__<span class="sy2">-</span><span class="nu0">3</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-program-exit.html"><span class="kw488">exit</span></a><span class="br0">(</span><a href="c-program-EXIT_status.html"><span class="kw494">EXIT_FAILURE</span></a><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
|
||||
<span class="kw4">int</span> ret_code <span class="sy1">=</span> <a href="c-io-fread.html"><span class="kw825">fread</span></a><span class="br0">(</span>B,<span class="kw4">sizeof</span><span class="br0">(</span><span class="kw4">double</span><span class="br0">)</span>,<span class="nu0">1</span>,fp<span class="br0">)</span><span class="sy4">;</span> <span class="coMULTI">/* 读取一个浮点值 */</span>
|
||||
<span class="coMULTI">/* 当前位置:在读一个浮点值后 */</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"%.1f<span class="es1">\n</span>"</span>, B<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span><span class="br0">)</span><span class="sy4">;</span> <span class="coMULTI">/* 打印一个浮点值 */</span>
|
||||
|
||||
<span class="kw1">if</span> <span class="br0">(</span>fsetpos<span class="br0">(</span>fp,<span class="sy3">&</span>pos<span class="br0">)</span> <span class="sy3">!</span><span class="sy1">=</span> <span class="nu0">0</span><span class="br0">)</span> <span class="coMULTI">/* 重设当前位置为文件起始 */</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw1">if</span> <span class="br0">(</span><a href="c-io-ferror.html"><span class="kw877">ferror</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-io-perror.html"><span class="kw878">perror</span></a><span class="br0">(</span><span class="st0">"fsetpos()"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw852">fprintf</span></a><span class="br0">(</span><a href="c-io.html"><span class="kw887">stderr</span></a>,<span class="st0">"fsetpos() failed in file %s at line # %d<span class="es1">\n</span>"</span>, __FILE__,__LINE__<span class="sy2">-</span><span class="nu0">5</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-program-exit.html"><span class="kw488">exit</span></a><span class="br0">(</span><a href="c-program-EXIT_status.html"><span class="kw494">EXIT_FAILURE</span></a><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
<span class="br0">}</span>
|
||||
|
||||
ret_code <span class="sy1">=</span> <a href="c-io-fread.html"><span class="kw825">fread</span></a><span class="br0">(</span>B,<span class="kw4">sizeof</span><span class="br0">(</span><span class="kw4">double</span><span class="br0">)</span>,<span class="nu0">1</span>,fp<span class="br0">)</span><span class="sy4">;</span> <span class="coMULTI">/* 重读首个浮点值 */</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"%.1f<span class="es1">\n</span>"</span>, B<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span><span class="br0">)</span><span class="sy4">;</span> <span class="coMULTI">/* 打印一个浮点值 */</span>
|
||||
<a href="c-io-fclose.html"><span class="kw822">fclose</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw1">return</span> <a href="c-program-EXIT_status.html"><span class="kw493">EXIT_SUCCESS</span></a><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">1.0
|
||||
1.0</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.9.3 The fsetpos function (p: 337)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.9.3 The fsetpos function (p: 303)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.9.3 The fsetpos function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fgetpos.html"><span class="t-lines"><span>fgetpos</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>获取文件位置指示器<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-ftell.html"><span class="t-lines"><span>ftell</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>返回当前的文件位置指示值<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fseek.html"><span class="t-lines"><span>fseek</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将文件位置指示符移动到文件中的指定位置<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,179 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>ftell</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_ftell skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">ftell</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><stdio.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl">
|
||||
<td class="t-dcl-nopad">
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">long</span> ftell<span class="br0">(</span> <a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span>stream <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>返回流 <code>stream</code> 的文件位置指示器。</p>
|
||||
<p>若流以二进制模式打开,则由此函数获得的值是从文件开始的字节数。</p>
|
||||
<p>若流以文本模式打开,则由此函数返回的值未指定,且仅若作为 <span class="t-lc"><a href="c-io-fseek.html">fseek()</a></span> 的输入才有意义。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>要检验的文件流</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>成功时为文件位置指示器,若失败发生则为 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">-</span><span class="nu0">1L</span></span></span> 。</p>
|
||||
<p>失败时,设 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw2">errno</span></span></span> 对象为实现定义的正值。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<p>ftell带错误检查</p>
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="coMULTI">/* 准备浮点值的数组。 */</span>
|
||||
<span class="co2">#define SIZE 5</span>
|
||||
<span class="kw4">double</span> A<span class="br0">[</span>SIZE<span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span><span class="nu0">1</span>.,<span class="nu0">2</span>.,<span class="nu0">3</span>.,<span class="nu0">4</span>.,<span class="nu0">5</span>.<span class="br0">}</span><span class="sy4">;</span>
|
||||
<span class="coMULTI">/* 写数组到文件。 */</span>
|
||||
<a href="c-io.html"><span class="kw883">FILE</span></a> <span class="sy2">*</span> fp <span class="sy1">=</span> <a href="c-io-fopen.html"><span class="kw819">fopen</span></a><span class="br0">(</span><span class="st0">"test.bin"</span>, <span class="st0">"wb"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fwrite.html"><span class="kw826">fwrite</span></a><span class="br0">(</span>A,<span class="kw4">sizeof</span><span class="br0">(</span><span class="kw4">double</span><span class="br0">)</span>,SIZE,fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fclose.html"><span class="kw822">fclose</span></a> <span class="br0">(</span>fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="coMULTI">/* 读取浮点值到数组 B。 */</span>
|
||||
<span class="kw4">double</span> B<span class="br0">[</span>SIZE<span class="br0">]</span><span class="sy4">;</span>
|
||||
fp <span class="sy1">=</span> <a href="c-io-fopen.html"><span class="kw819">fopen</span></a><span class="br0">(</span><span class="st0">"test.bin"</span>,<span class="st0">"rb"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw4">long</span> <span class="kw4">int</span> pos <span class="sy1">=</span> ftell<span class="br0">(</span>fp<span class="br0">)</span><span class="sy4">;</span> <span class="coMULTI">/* 位置指示器在文件起始 */</span>
|
||||
<span class="kw1">if</span> <span class="br0">(</span>pos <span class="sy1">==</span> <span class="sy2">-</span><span class="nu0">1L</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-io-perror.html"><span class="kw878">perror</span></a><span class="br0">(</span><span class="st0">"ftell()"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw852">fprintf</span></a><span class="br0">(</span><a href="c-io.html"><span class="kw887">stderr</span></a>,<span class="st0">"ftell() failed in file %s at line # %d<span class="es1">\n</span>"</span>, __FILE__,__LINE__<span class="sy2">-</span><span class="nu0">4</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-program-exit.html"><span class="kw488">exit</span></a><span class="br0">(</span><a href="c-program-EXIT_status.html"><span class="kw494">EXIT_FAILURE</span></a><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"%ld<span class="es1">\n</span>"</span>, pos<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="kw4">int</span> ret_code <span class="sy1">=</span> <a href="c-io-fread.html"><span class="kw825">fread</span></a><span class="br0">(</span>B,<span class="kw4">sizeof</span><span class="br0">(</span><span class="kw4">double</span><span class="br0">)</span>,<span class="nu0">1</span>,fp<span class="br0">)</span><span class="sy4">;</span> <span class="coMULTI">/* 读取一个浮点值 */</span>
|
||||
pos <span class="sy1">=</span> ftell<span class="br0">(</span>fp<span class="br0">)</span><span class="sy4">;</span> <span class="coMULTI">/* 读取一个浮点值后的位置指示器 */</span>
|
||||
<span class="kw1">if</span> <span class="br0">(</span>pos <span class="sy1">==</span> <span class="sy2">-</span><span class="nu0">1L</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-io-perror.html"><span class="kw878">perror</span></a><span class="br0">(</span><span class="st0">"ftell()"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw852">fprintf</span></a><span class="br0">(</span><a href="c-io.html"><span class="kw887">stderr</span></a>,<span class="st0">"ftell() failed in file %s at line # %d<span class="es1">\n</span>"</span>, __FILE__,__LINE__<span class="sy2">-</span><span class="nu0">4</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-program-exit.html"><span class="kw488">exit</span></a><span class="br0">(</span><a href="c-program-EXIT_status.html"><span class="kw494">EXIT_FAILURE</span></a><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"%ld<span class="es1">\n</span>"</span>, pos<span class="br0">)</span><span class="sy4">;</span>
|
||||
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"%.1f<span class="es1">\n</span>"</span>, B<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span><span class="br0">)</span><span class="sy4">;</span> <span class="coMULTI">/* 打印浮点值 */</span>
|
||||
|
||||
<span class="kw1">return</span> <a href="c-program-EXIT_status.html"><span class="kw493">EXIT_SUCCESS</span></a><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">0
|
||||
8
|
||||
1.0</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.21.9.4 The ftell function (p: 337-338)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.19.9.4 The ftell function (p: 303-304)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c89">
|
||||
<ul>
|
||||
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>4.9.9.4 The ftell function</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fgetpos.html"><span class="t-lines"><span>fgetpos</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>获取文件位置指示器<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fseek.html"><span class="t-lines"><span>fseek</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将文件位置指示符移动到文件中的指定位置<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fsetpos.html"><span class="t-lines"><span>fsetpos</span></span></a></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将文件位置指示器移动到文件中的指定位置<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,170 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>fwide</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_fwide skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">fwide</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><wchar.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c95">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> fwide<span class="br0">(</span> <a href="c-io.html"><span class="kw884">FILE</span></a> <span class="sy2">*</span>stream, <span class="kw4">int</span> mode <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c95">(C95 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>若 <code>mode > 0</code> ,则试图令 <code>stream</code> 为宽面向。若 <code>mode < 0</code> ,则试图令 <code>stream</code> 为字节面向。若 <span class="t-c"><span class="mw-geshi c source-c">mode<span class="sy1">==</span><span class="nu0">0</span></span></span> ,则只查询流的当前面向。</p>
|
||||
<p>若流的当前面向已决定(通过执行输出或通过之前调用 fwide ),则此函数不做任何事。</p>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>指向修改或查询的 C I/O 流的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>mode</td>
|
||||
<td>-</td>
|
||||
<td>大于零的整数值设置流为宽,小于零的整数值设置流为窄,零为仅查询</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<p>若流在此调用后为面向宽,则为大于零的整数,若流在此调用后为面向字节,则为小于零的整数,若流无面向,则为零。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<p>下列代码设置并重置流面向。</p>
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <wchar.h></span>
|
||||
<span class="co2">#include <stdio.h></span>
|
||||
<span class="co2">#include <stdlib.h></span>
|
||||
<span class="kw4">void</span> try_read<span class="br0">(</span><a href="c-io.html"><span class="kw884">FILE</span></a><span class="sy2">*</span> fp<span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw4">int</span> c <span class="sy1">=</span> <a href="c-io-fgetc.html"><span class="kw827">fgetc</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">if</span><span class="br0">(</span>c <span class="sy1">==</span> <a href="c-io.html"><span class="kw889">EOF</span></a><span class="br0">)</span> <a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">"narrow character read failed"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">else</span> <a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"narrow character read '%c'<span class="es1">\n</span>"</span>, c<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
wint_t wc <span class="sy1">=</span> <a href="c-io-fgetwc.html"><span class="kw838">fgetwc</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">if</span><span class="br0">(</span>wc <span class="sy1">==</span> WEOF<span class="br0">)</span> <a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">"wide character read failed"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">else</span> <a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">"wide character read '%lc'<span class="es1">\n</span>"</span>, wc<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
<span class="kw4">void</span> show<span class="br0">(</span><span class="kw4">int</span> n<span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw1">if</span><span class="br0">(</span>n <span class="sy1">==</span> <span class="nu0">0</span><span class="br0">)</span> <a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">"no orientation"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span>n <span class="sy1"><</span> <span class="nu0">0</span><span class="br0">)</span> <a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">"narrow orientation"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">else</span> <a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">"wide orientation"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-io.html"><span class="kw884">FILE</span></a><span class="sy2">*</span> fp <span class="sy1">=</span> <a href="c-io-fopen.html"><span class="kw819">fopen</span></a><span class="br0">(</span><span class="st0">"main.cpp"</span>,<span class="st0">"r"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">if</span> <span class="br0">(</span><span class="sy3">!</span>fp<span class="br0">)</span> <span class="br0">{</span>
|
||||
<a href="c-io-perror.html"><span class="kw879">perror</span></a><span class="br0">(</span><span class="st0">"fopen() failed"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">return</span> <a href="c-program-EXIT_status.html"><span class="kw494">EXIT_FAILURE</span></a><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
|
||||
<span class="co1">// 新开的流无面向。</span>
|
||||
show<span class="br0">(</span>fwide<span class="br0">(</span>fp, <span class="nu0">0</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="co1">// 建立面向字节。</span>
|
||||
show<span class="br0">(</span>fwide<span class="br0">(</span>fp, <span class="sy2">-</span><span class="nu0">1</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
try_read<span class="br0">(</span>fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="co1">// 只有freopen()能重置流面向。</span>
|
||||
<span class="kw1">if</span> <span class="br0">(</span><a href="c-io-freopen.html"><span class="kw820">freopen</span></a><span class="br0">(</span><span class="st0">"main.cpp"</span>,<span class="st0">"r"</span>,fp<span class="br0">)</span> <span class="sy1">==</span> <a href="c-types-NULL.html"><span class="kw103">NULL</span></a><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<a href="c-io-perror.html"><span class="kw879">perror</span></a><span class="br0">(</span><span class="st0">"freopen() failed"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="kw1">return</span> <a href="c-program-EXIT_status.html"><span class="kw494">EXIT_FAILURE</span></a><span class="sy4">;</span>
|
||||
<span class="br0">}</span>
|
||||
|
||||
<span class="co1">// 重开的流无面向。</span>
|
||||
show<span class="br0">(</span>fwide<span class="br0">(</span>fp, <span class="nu0">0</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<span class="co1">// 建立面向宽。</span>
|
||||
show<span class="br0">(</span>fwide<span class="br0">(</span>fp, <span class="nu0">1</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
try_read<span class="br0">(</span>fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
|
||||
<a href="c-io-fclose.html"><span class="kw822">fclose</span></a><span class="br0">(</span>fp<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>可能的输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">no orientation
|
||||
narrow orientation
|
||||
narrow character read '#'
|
||||
wide character read failed
|
||||
no orientation
|
||||
wide orientation
|
||||
narrow character read failed
|
||||
wide character read '#'</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.29.3.5 The fwide function (p: 423)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.24.3.5 The fwide function (p: 369)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fopen.html"><span class="t-lines"><span>fopen</span><span>fopen_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>打开文件<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,773 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
||||
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>wprintf, fwprintf, swprintf, wprintf_s, fwprintf_s, swprintf_s, snwprintf_s</title>
|
||||
<link rel="stylesheet" href="ext.css" />
|
||||
<link rel="stylesheet" href="site_modules.css" />
|
||||
</head>
|
||||
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_io_fwprintf skin-cppreference2 action-view cpp-navbar">
|
||||
<div id="cpp-content-base">
|
||||
<div id="content"><a id="top"></a>
|
||||
<h1 id="firstHeading" class="firstHeading">wprintf, fwprintf, swprintf, wprintf_s, fwprintf_s, swprintf_s, snwprintf_s</h1>
|
||||
<div id="bodyContent">
|
||||
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <a href="c-io.html">io</a></span></div>
|
||||
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
||||
<table class="t-dcl-begin">
|
||||
<tbody>
|
||||
<tr class="t-dsc-header">
|
||||
<td>
|
||||
<div>定义于头文件 <code><wchar.h></code></div>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody class="t-dcl-rev t-dcl-rev-num">
|
||||
<tr class="t-dcl-rev-aux">
|
||||
<td></td>
|
||||
<td rowspan="142">(1)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c95 t-until-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> wprintf<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">wchar_t</span> <span class="sy2">*</span>format, ... <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c95">(C95 起)</span><br />
|
||||
<span class="t-mark-rev t-until-c99">(C99 前)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> wprintf<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">wchar_t</span> <span class="sy2">*</span><span class="kw4">restrict</span> format, ... <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody></tbody>
|
||||
<tbody class="t-dcl-rev t-dcl-rev-num">
|
||||
<tr class="t-dcl-rev-aux">
|
||||
<td></td>
|
||||
<td rowspan="142">(2)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c95 t-until-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> fwprintf<span class="br0">(</span> <a href="c-io.html"><span class="kw881">FILE</span></a> <span class="sy2">*</span>stream, <span class="kw4">const</span> <span class="kw4">wchar_t</span><span class="sy2">*</span> format, ... <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c95">(C95 起)</span><br />
|
||||
<span class="t-mark-rev t-until-c99">(C99 前)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> fwprintf<span class="br0">(</span> <a href="c-io.html"><span class="kw881">FILE</span></a> <span class="sy2">*</span><span class="kw4">restrict</span> stream,<br />
|
||||
<span class="kw4">const</span> <span class="kw4">wchar_t</span> <span class="sy2">*</span><span class="kw4">restrict</span> format, ... <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody></tbody>
|
||||
<tbody class="t-dcl-rev t-dcl-rev-num">
|
||||
<tr class="t-dcl-rev-aux">
|
||||
<td></td>
|
||||
<td rowspan="142">(3)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c95 t-until-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> swprintf<span class="br0">(</span> <span class="kw4">wchar_t</span> <span class="sy2">*</span>buffer, <a href="c-types-size_t.html"><span class="kw100">size_t</span></a> bufsz,<br />
|
||||
<span class="kw4">const</span> <span class="kw4">wchar_t</span><span class="sy2">*</span> format, ... <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c95">(C95 起)</span><br />
|
||||
<span class="t-mark-rev t-until-c99">(C99 前)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c99">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> swprintf<span class="br0">(</span> <span class="kw4">wchar_t</span> <span class="sy2">*</span><span class="kw4">restrict</span> buffer, <a href="c-types-size_t.html"><span class="kw100">size_t</span></a> bufsz,<br />
|
||||
<span class="kw4">const</span> <span class="kw4">wchar_t</span> <span class="sy2">*</span><span class="kw4">restrict</span> format, ... <span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td class="t-dcl-nopad"></td>
|
||||
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> wprintf_s<span class="br0">(</span> <span class="kw4">const</span> <span class="kw4">wchar_t</span> <span class="sy2">*</span><span class="kw4">restrict</span> format, ...<span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(4)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> fwprintf_s<span class="br0">(</span> <a href="c-io.html"><span class="kw881">FILE</span></a> <span class="sy2">*</span><span class="kw4">restrict</span> stream,<br />
|
||||
<span class="kw4">const</span> <span class="kw4">wchar_t</span> <span class="sy2">*</span><span class="kw4">restrict</span> format, ...<span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(5)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> swprintf_s<span class="br0">(</span> <span class="kw4">wchar_t</span> <span class="sy2">*</span><span class="kw4">restrict</span> buffer, rsize_t bufsz,<br />
|
||||
<span class="kw4">const</span> <span class="kw4">wchar_t</span><span class="sy2">*</span> <span class="kw4">restrict</span> format, ...<span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(6)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl t-since-c11">
|
||||
<td>
|
||||
<div><span class="mw-geshi c source-c"><span class="kw4">int</span> snwprintf_s<span class="br0">(</span> <span class="kw4">wchar_t</span> <span class="sy2">*</span> <span class="kw4">restrict</span> s, rsize_t n,<br />
|
||||
<span class="kw4">const</span> <span class="kw4">wchar_t</span> <span class="sy2">*</span> <span class="kw4">restrict</span> format, ...<span class="br0">)</span><span class="sy4">;</span></span></div>
|
||||
</td>
|
||||
<td>(7)</td>
|
||||
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dcl-sep">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>从给定位置加载数据,将它们转换成宽字符串等价物并将结果写入各种池中。</p>
|
||||
<div class="t-li1"><span class="t-li">1)</span> 写结果到 <span class="t-lc"><a href="c-io.html">stdout</a></span> 。</div>
|
||||
<div class="t-li1"><span class="t-li">2)</span> 写结果到文件流 <code>stream</code> 。</div>
|
||||
<div class="t-li1"><span class="t-li">3)</span> 若<code>bufsz</code>大于零,则写结果到宽字符串<code>buffer</code>。至多允许写入后随空宽字符的<span class="t-c"><span class="mw-geshi c source-c">bufsz<span class="sy2">-</span><span class="nu0">1</span></span></span>个宽字符。若<code>bufsz</code>为零,则不写入任何内容(且<code>buffer</code>可以是空指针)然而返回值(会被写入的宽字符数)被照样计算并返回。</div>
|
||||
<div class="t-li1"><span class="t-li">4-6)</span> 同 <span class="t-v">(1-3)</span> ,除了在运行时检测下列错误,并调用当前安装的<a href="c-error-set_constraint_handler_s.html">制约处理</a>函数:
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><code>format</code> 中存在转换指定符 <code>%n</code></li>
|
||||
<li>任何一个对应 <code>%s</code> 的参数是空指针</li>
|
||||
<li><code>format</code> 或 <code>buffer</code> 是空指针</li>
|
||||
<li><code>bufsz</code> 为零或大于 <span class="t-lc">RSIZE_MAX</span></li>
|
||||
<li>任何一个字符串及字符转换指定符中出现编码错误</li>
|
||||
<li>(仅对于 <code>swprintf_s</code> )会写入的宽字符数含空宽字符,将超出 <code>bufsz</code> 。</li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dd></dd>
|
||||
<dd>同所有边界检查函数, <code>wprintf_s, fwprintf_s, swprintf_s, snwprintf_s</code> 仅若实现定义了 <span class="t-c"><span class="mw-geshi c source-c">__STDC_LIB_EXT1__</span></span> ,且用户在包含 <code><wchar.h></code> 前定义 <span class="t-c"><span class="mw-geshi c source-c">__STDC_WANT_LIB_EXT1__</span></span> 为整数常量 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> 才保证可用。</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E6.95.B0">参数</span></h3>
|
||||
<table class="t-par-begin">
|
||||
<tr class="t-par">
|
||||
<td>stream</td>
|
||||
<td>-</td>
|
||||
<td>要写入的输出文件流</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>buffer</td>
|
||||
<td>-</td>
|
||||
<td>指向要写入的宽字符串的指针</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>bufsz</td>
|
||||
<td>-</td>
|
||||
<td>最多会写入 bufsz - 1 个宽字符,再加空终止符</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>format</td>
|
||||
<td>-</td>
|
||||
<td>指向指定数据转译方式的空终止宽字符串的指针。
|
||||
<p>格式字符串由普通宽字符(除了 <code><b>%</b></code> )和转换指定构成,前者被复制到输出流而无更改。每个转换指定拥有下列格式:</p>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>引入的 <code><b>%</b></code> 字符</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><span class="t-mark">(可选)</span>一或多个修改转换行为的标签:</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><code><b>-</b></code> :转换结果在域内左校正(默认为右校正)</li>
|
||||
<li><code><b>+</b></code> :有符号转换的符号始终前置于转换结果(默认结果前置负号仅当它为负)</li>
|
||||
<li><i>空格</i>:若有符号转换的结果不以符号开始,或为空,则前置空格于结果。若存在 <code>+</code> 标签则忽略<i>空格</i>。</li>
|
||||
<li><code><b>#</b></code> :进行<i>替用形式</i>的转换。准确的效果见下表,其他情况下行为未定义。</li>
|
||||
<li><code><b>0</b></code> :对于整数和浮点数转换,使用前导零代替<i>空格</i>字符填充域。对于整数,若显式指定精度,则忽略此标签。对于其他转换,使用此标签导致未定义行为。若存在 <code>-</code> 标签则忽略 <code>0</code> 。</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><span class="t-mark">(可选)</span>指定最小域宽的整数值或 <code>*</code> 。若有要求,则结果会以<i>空格</i>字符(默认情况)填充,在右校正时于左,左校正时于右。使用 <code>*</code> 的情况下,以一个额外的 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">int</span></span></span> 类型参数指定宽度。若参数值为负数,则它导致指定 <code>-</code> 标签和正域宽。(注意:这是最小宽度:决不被截断值)。</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><span class="t-mark">(可选)</span>后随整数或 <code><b>*</b></code> 或两者皆无的 <code><b>.</b></code> 指示转换的<i>精度</i>。在使用 <code>*</code> 的情况下,<i>精度</i>由额外的 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">int</span></span></span> 类型参数指定。若此参数的值为负数,则它被忽略。若既不使用数字亦不使用 <code><b>*</b></code> ,则精度采用零。<i>精度</i>的准确效果见下表。</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><span class="t-mark">(可选)</span>指定参数大小的<i>长度修饰符</i></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>转换格式指定符</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<p>下列格式指定符可用:</p>
|
||||
<table class="wikitable" style="text-align:center; font-size:85%; max-width:90em;">
|
||||
<tr>
|
||||
<th rowspan="1">转换<br />
|
||||
指定符</th>
|
||||
<th rowspan="1">解释</th>
|
||||
<th colspan="9">参数类型</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="2" style="text-align:right; font-weight:normal;">长度修饰符</th>
|
||||
<th><code>hh</code>
|
||||
<p><span class="t-mark-rev t-since-c99">(C99)</span></p>
|
||||
</th>
|
||||
<th><code>h</code></th>
|
||||
<th style="font-weight:normal;">(无)</th>
|
||||
<th><code><b>l</b></code></th>
|
||||
<th><code><b>ll</b></code>
|
||||
<p><span class="t-mark-rev t-since-c99">(C99)</span></p>
|
||||
</th>
|
||||
<th><code><b>j</b></code>
|
||||
<p><span class="t-mark-rev t-since-c99">(C99)</span></p>
|
||||
</th>
|
||||
<th><code><b>z</b></code>
|
||||
<p><span class="t-mark-rev t-since-c99">(C99)</span></p>
|
||||
</th>
|
||||
<th><code><b>t</b></code>
|
||||
<p><span class="t-mark-rev t-since-c99">(C99)</span></p>
|
||||
</th>
|
||||
<th><code><b>L</b></code></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>%</code></th>
|
||||
<td style="text-align:left;">写字面的 <code><b>%</b></code> 。完整转换指定必须是 <code><b>%%</b></code> 。</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>c</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>写<b>单个字符</b>。</dd>
|
||||
</dl>
|
||||
<p>参数首先被转换成 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">wchar_t</span></span></span> ,如同通过调用 <span class="t-lc"><a href="c-string-multibyte-btowc.html">btowc</a></span> 。 若使用 <b>l</b> 修饰符,则 <code>wint_t</code> 参数首先被转换成 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">wchar_t</span></span></span> 。</p>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">int</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c">wint_t</span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>s</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>写<b>字符串</b></dd>
|
||||
</dl>
|
||||
<p>参数必须为一个指针,指向包含以初始迁移状态开始的,多字节字符序列的字符数组首元素,数组会被转换成宽字符数组,如同通过以零初始化转换状态调用 <span class="t-lc"><a href="c-string-multibyte-mbrtowc.html">mbrtowc</a></span> 。 <i>精度</i>指定写入的最大宽字符数。若未指定<i>精度</i>,则写每个宽字符直到而不含首个空终止符。 若使用 <b>l</b> 指定符,则参数必须是指向 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">wchar_t</span></span></span> 数组首元素的指针。</p>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">char</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">wchar_t</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>d</code><br />
|
||||
<code>i</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>转换<b>有符号整数</b>为十进制表示 <i>[-]dddd</i> 。</dd>
|
||||
</dl>
|
||||
<p><i>精度</i>指定出现的最小数位数。默认精度是 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> 。<br />
|
||||
若被转换的值和精度都是 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> ,则转换结果无字符。</p>
|
||||
</td>
|
||||
<td rowspan="1">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">signed</span> <span class="kw4">char</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="1">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">short</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="1">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">int</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="1">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">long</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="1">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">long</span> <span class="kw4">long</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="1">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><a href="c-types-integer.html"><span class="kw118">intmax_t</span></a></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="1">
|
||||
<div class="t-vertical">
|
||||
<div>有符号 <span class="t-c"><span class="mw-geshi c source-c"><a href="c-types-size_t.html"><span class="kw100">size_t</span></a></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="1">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><a href="c-types-ptrdiff_t.html"><span class="kw101">ptrdiff_t</span></a></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>o</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>转换<b>无符号整数</b>为八进制表示 <i>oooo</i> 。</dd>
|
||||
</dl>
|
||||
<p><i>精度</i>指定出现的最小数位数。默认精度是 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> 。 若被转换值和精度都是 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> ,则转换结果无字符。 在<i>替用实现</i>中精度按需增加,以写入一个前导零。 在此情况下若被转换值和精度都是 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> ,则写入单个 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> 。</p>
|
||||
</td>
|
||||
<td rowspan="3">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">unsigned</span> <span class="kw4">char</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="3">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">unsigned</span> <span class="kw4">short</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="3">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">unsigned</span> <span class="kw4">int</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="3">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">unsigned</span> <span class="kw4">long</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="3">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">unsigned</span> <span class="kw4">long</span> <span class="kw4">long</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="3">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><a href="c-types-integer.html"><span class="kw132">uintmax_t</span></a></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="3">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><a href="c-types-size_t.html"><span class="kw100">size_t</span></a></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="3">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><a href="c-types-ptrdiff_t.html"><span class="kw101">ptrdiff_t</span></a></span></span> 的无符号版本</div>
|
||||
</div>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>x</code><br />
|
||||
<code>X</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>转换<b>无符号整数</b>为十六进制表示 <i>hhhh</i> 。</dd>
|
||||
</dl>
|
||||
<p><code><b>x</b></code> 转换使用字母 <code>abcdef</code> 。<br />
|
||||
<code><b>X</b></code> 转换使用 <code>ABCDEF</code> 。<br />
|
||||
<i>精度</i>指定出现的最小数位数。默认精度是 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> 。 若被转换值和精度都是 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> ,则转换结果无字符。 在<i>替用实现中</i>若被转换值为非零则结果有 <code><b>0x</b></code> 或 <code><b>0X</b></code> 前缀。</p>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>u</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>转换<b>无符号整数</b>为十进制表示 <i>dddd</i> 。</dd>
|
||||
</dl>
|
||||
<p><i>精度</i>指定出现的最小数位数。 默认精度是 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> 。 若被转换值和精度都是 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> ,则转换结果无字符。</p>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>f</code><br />
|
||||
<code>F</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>转换<b>浮点数</b>为 <i>[-]ddd.ddd</i> 样式的十进制记法。</dd>
|
||||
</dl>
|
||||
<p><i>精度</i>指定小数点字符后出现的准确数位数。 默认精度是 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">6</span></span></span> 。 在<i>替用实现</i>中即使没有小数点后数位也写小数点。 无穷大和非数的转换样式见注意。</p>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td rowspan="4">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">double</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td rowspan="4">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">double</span></span></span> <span class="t-mark-rev t-since-c99">(C99)</span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td rowspan="4">
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">long</span> <span class="kw4">double</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>e</code><br />
|
||||
<code>E</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>转换<b>浮点数</b>为十进制指数记法。</dd>
|
||||
</dl>
|
||||
<p><code><b>e</b></code> 转换样式使用 <i>[-]d.ddd</i><code><b>e</b></code><i>±dd</i> 。<br />
|
||||
<code><b>E</b></code> 转换样式使用 <i>[-]d.ddd</i><code><b>E</b></code><i>±dd</i> 。<br />
|
||||
指数至少含二个数位,仅当所需时使用更多数位。 若值为 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> ,则指数亦为 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> 。 <i>精度</i>指定小数点字符后出现的最小数位数。 默认精度是 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">6</span></span></span> 。 在<i>替用实现</i>中即使没有小数点后数位也写小数点。 无穷大和非数的转换样式见注意。</p>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>a</code><br />
|
||||
<code>A</code>
|
||||
<p><span class="t-mark-rev t-since-c99">(C99)</span></p>
|
||||
</th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>转换<b>浮点数</b>为十六进制记法。</dd>
|
||||
</dl>
|
||||
<p><code><b>a</b></code> 转换样式使用 <i>[-]</i><code><b>0x</b></code><i>h.hhh</i><code><b>p</b></code><i>±d</i> 。<br />
|
||||
<code><b>A</b></code> 转换样式使用 <i>[-]</i><code><b>0X</b></code><i>h.hhh</i><code><b>P</b></code><i>±d</i> 。<br />
|
||||
若参数是正规化的浮点值,则首个十六进制数位非 <code>0</code> 。 若值为 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> ,则指数亦为 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> 。 <i>精度</i>指定小数点字符后出现的最小数位数。 默认精度足以准确表示该值。 在<i>替用实现</i>中即使没有小数点后数位也写小数点。 无穷大和非数的转换样式见注意。</p>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>g</code><br />
|
||||
<code>G</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>转换<b>浮点数</b>为十进制小数或十进制指数记法,依赖于值和<i>精度</i>。</dd>
|
||||
</dl>
|
||||
<p><code><b>g</b></code> 转换样式将进行带样式 <code><b>e</b></code> 或 <code><b>f</b></code> 的转换。<br />
|
||||
<code><b>G</b></code> 转换样式将进行带样式 <code><b>E</b></code> 或 <code><b>F</b></code> 的转换。<br />
|
||||
令 <code>P</code> 等于精度,若它非零,若精度未指定则为 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">6</span></span></span> ,若精度为 <span class="t-c"><span class="mw-geshi c source-c">​<span class="nu0">0</span>​</span></span> 则等于 <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> 。然后,若带样式 <code>E</code> 的转换会有指数 <code>X</code> ,则:</p>
|
||||
<ul>
|
||||
<li>若 <i>P > X ≥ −4</i> ,则转换带 <code><b>f</b></code> 或 <code><b>F</b></code> 风格,及精度 <i>P − 1 − X</i> 。</li>
|
||||
<li>否则,转换带 <code><b>e</b></code> 或 <code><b>E</b></code> 风格,及精度 <i>P − 1</i> 。</li>
|
||||
</ul>
|
||||
<p>除非要求<i>替用表示</i>,否则末尾零会被移除,且若不留下小数部分则小数点亦被移除。 无穷大和非数的转换样式见注意。</p>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>n</code></th>
|
||||
<td style="text-align:left;">
|
||||
<dl>
|
||||
<dd>返回对函数的此调用迄今为止<b>写入的字符数</b>。</dd>
|
||||
</dl>
|
||||
<p>结果被<i>写入</i>到参数所指向的值。 该指定不可含有任何<i>标签</i>、<i>域宽</i>或<i>精度</i>。</p>
|
||||
</td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">signed</span> <span class="kw4">char</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">short</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">int</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">long</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">long</span> <span class="kw4">long</span><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><a href="c-types-integer.html"><span class="kw118">intmax_t</span></a><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div>有符号 <span class="t-c"><span class="mw-geshi c source-c"><a href="c-types-size_t.html"><span class="kw100">size_t</span></a><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="t-vertical">
|
||||
<div><span class="t-c"><span class="mw-geshi c source-c"><a href="c-types-ptrdiff_t.html"><span class="kw101">ptrdiff_t</span></a><span class="sy2">*</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><code>p</code></th>
|
||||
<td style="text-align:left;">写定义<b>指针</b>的实现定义字符序列。</td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">void</span><span class="sy2">*</span></span></span></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
<td style="background: #ececec; color: grey; vertical-align: middle; text-align: center;" class="table-na"><small>N/A</small></td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>浮点转换函数转换无穷大到 <code>inf</code> 或 <code>infinity</code> 。使用哪个是实现定义的。</p>
|
||||
<p>非数转换成 <code>nan</code> 或 <code>nan(<i>char_sequence</i>)</code> 。使用哪个是实现定义的。</p>
|
||||
<p>转换 <code><b>F</b></code> 、 <code><b>E</b></code> 、 <code><b>G</b></code> 、 <code><b>A</b></code> 替代上面输出 <code>INF</code> 、 <code>INFINITY</code> 、 <code>NAN</code>。</p>
|
||||
<p>尽管 <code>%c</code> 期待 <code>int</code> 参数,传递 <code>char</code> 是安全的,因为在调用变参数函数时发生整数提升。</p>
|
||||
<p>定宽整数类型( <span class="t-lc"><a href="c-types-integer.html">int8_t</a></span> 等)的正确转换指定定义于头文件 <a href="c-types-integer.html"><inttypes.h></a> (尽管 <span class="t-lc"><a href="c-types-integer.html">PRIdMAX</a></span> 、 <span class="t-lc"><a href="c-types-integer.html">PRIuMAX</a></span> 等就是 <code>%jd</code> 、 <code>%ju</code> 等的别名)。</p>
|
||||
<p>内存写入转换指定符 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">%</span>n</span></span> 是安全漏洞的常见目标,这里格式字符串依赖用户输入,而有边界检查的 <code>printf_s</code> 系列函数不支持此转换指定符。</p>
|
||||
<p>在每个转换指定符的行动后有一个<a href="c-language-eval_order.html">序列点</a>;这允许于同一变量多次存入 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">%</span>n</span></span> 的结果,并在同一此调用中打印出先前以 <span class="t-c"><span class="mw-geshi c source-c"><span class="sy2">%</span>n</span></span> 存储的值。</p>
|
||||
<p>若转换指定非法,则行为未定义。</p>
|
||||
<p><br /></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="t-par">
|
||||
<td>...</td>
|
||||
<td>-</td>
|
||||
<td>指定要打印数据的参数。若任何参数在<a href="c-language-conversion.html#.E9.BB.98.E8.AE.A4.E5.8F.82.E6.95.B0.E6.8F.90.E5.8D.87">默认参数提升</a>后不拥有对应转换指定符所期待的类型,或若参数少于 <code>format</code> 所要求的数量,则行为未定义。若有多于 <code>format</code> 所要求的参数,则求值并忽略额外参数</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
||||
<div class="t-li1"><span class="t-li">1,2)</span> 若成功则为写入的宽字符数,若错误发生则为负值。</div>
|
||||
<div class="t-li1"><span class="t-li">3)</span> 若成功则为写入的宽字符数(不计空终止宽字符),若编码错误发生或被生成的宽字符数等于或大于 <code>size</code> (含 <code>size</code> 为零时)则为负值。</div>
|
||||
<div class="t-li1"><span class="t-li">4,5)</span> 若成功则为写入的宽字符数,若错误发生则为负值。</div>
|
||||
<div class="t-li1"><span class="t-li">6)</span> 写入 <code>buffer</code> 的宽字符数(不计空终止符)。编码错误发生和溢出时返回负值。所有其他错误发生时返回零。</div>
|
||||
<div class="t-li1"><span class="t-li">7)</span> 假如 <code>bufsz</code> 充分大则本应写入 <code>buffer</code> 的宽字符数(不计空终止符),或者若错误发生则为负值。(即写入成功仅当返回值非负且小于 <code>bufsz</code> )。</div>
|
||||
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">注意</span></h3>
|
||||
<p>窄字符串提供 <span class="t-lc"><a href="c-io-fprintf.html">snprintf</a></span> ,它使得确定需求的缓冲区大小可行,不过宽字符串无等价物(在 C11 的 snwprintf_s 前),而为了确定缓冲区大小,程序可能需要调用 <span class="t-lc"><strong class="selflink">swprintf</strong></span> ,检查返回值,并重分配更大的缓冲区,反复尝试直至成功。</p>
|
||||
<p>不同于 <code>swprintf_s</code> , <code>snwprintf_s</code> 将截断结果以适应 <code>buffer</code> 所指向的数组,尽管这种截断被多数边界检查函数当做错误。</p>
|
||||
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
||||
<div class="t-example">
|
||||
<div class="t-example-live-link"></div>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="c source-c">
|
||||
<pre class="de1"><span class="co2">#include <locale.h></span>
|
||||
<span class="co2">#include <wchar.h></span>
|
||||
|
||||
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
||||
<span class="br0">{</span>
|
||||
<span class="kw4">char</span> narrow_str<span class="br0">[</span><span class="br0">]</span> <span class="sy1">=</span> <span class="st0">"z<span class="es3">\u00df</span><span class="es3">\u6c34</span><span class="es4">\U0001f34c</span>"</span><span class="sy4">;</span>
|
||||
<span class="co1">// 或 "zß水🍌"</span>
|
||||
<span class="co1">// 或 "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9f\x8d\x8c";</span>
|
||||
<span class="kw4">wchar_t</span> warr<span class="br0">[</span><span class="nu0">29</span><span class="br0">]</span><span class="sy4">;</span> <span class="co1">// 期待的字符串为 28 字节加 1 个空终止符</span>
|
||||
<a href="c-locale-setlocale.html"><span class="kw898">setlocale</span></a><span class="br0">(</span><a href="c-locale-LC_categories.html"><span class="kw901">LC_ALL</span></a>, <span class="st0">"en_US.utf8"</span><span class="br0">)</span><span class="sy4">;</span>
|
||||
swprintf<span class="br0">(</span>warr, <span class="kw4">sizeof</span> warr<span class="sy2">/</span><span class="kw4">sizeof</span> <span class="sy2">*</span>warr,
|
||||
L<span class="st0">"Converted from UTF-8: '%s'"</span>, narrow_str<span class="br0">)</span><span class="sy4">;</span>
|
||||
wprintf<span class="br0">(</span>L<span class="st0">"%ls<span class="es1">\n</span>"</span>, warr<span class="br0">)</span><span class="sy4">;</span>
|
||||
<span class="br0">}</span></pre></div>
|
||||
</div>
|
||||
<p>输出:</p>
|
||||
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
||||
<div class="text source-text">
|
||||
<pre class="de1">Converted from UTF-8: 'zß水🍌'</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
||||
<div class="t-ref-std-11">
|
||||
<ul>
|
||||
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.29.2.1 The fwprintf function (p: 403-410)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.29.2.3 The swprintf function (p: 416)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.29.2.11 The wprintf function (p: 421)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.9.1.1 The fwprintf_s function (p: 628)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.9.1.4 The swprintf_s function (p: 630-631)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>K.3.9.1.13 The wprintf_s function (p: 637-638)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<div class="t-ref-std-c99">
|
||||
<ul>
|
||||
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
||||
</ul>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.24.2.1 The fwprintf function (p: 349-356)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.24.2.3 The swprintf function (p: 362)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>7.24.2.11 The wprintf function (p: 366)</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
||||
<table class="t-dsc-begin">
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fprintf.html"><span class="t-lines"><span>printf</span><span>fprintf</span><span>sprintf</span><span>snprintf</span><span>printf_s</span><span>fprintf_s</span><span>sprintf_s</span><span>snprintf_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span></span><span></span><span></span><span><span class="t-mark-rev t-since-c99">(C99)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>打印格式化输出到 <span class="t-lc"><a href="c-io.html">stdout</a></span> 、文件流或缓冲区<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-vfwprintf.html"><span class="t-lines"><span>vwprintf</span><span>vfwprintf</span><span>vswprintf</span><span>vwprintf_s</span><span>vfwprintf_s</span><span>vswprintf_s</span><span>vsnwprintf_s</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c95">(C95)</span></span><span><span class="t-mark-rev t-since-c95">(C95)</span></span><span><span class="t-mark-rev t-since-c95">(C95)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span><span><span class="t-mark-rev t-since-c11">(C11)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>打印格式化宽字符输出到 <span class="t-lc"><a href="c-io.html">stdout</a></span> 、文件流或缓冲区<br />
|
||||
使用可变参数列表<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
<tr class="t-dsc">
|
||||
<td>
|
||||
<div class="t-dsc-member-div">
|
||||
<div><a href="c-io-fputws.html"><span class="t-lines"><span>fputws</span></span></a></div>
|
||||
<div><span class="t-lines"><span><span class="t-mark-rev t-since-c95">(C95)</span></span></span></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>将一个宽字符串写入文件流<br />
|
||||
<span class="t-mark">(函数)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="visualClear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user