59 lines
2.7 KiB
Markdown
59 lines
2.7 KiB
Markdown
|
---
|
|||
|
title: 『C言語ポインタ完全制覇 (標準プログラマーズライブラリ)』
|
|||
|
author: kazu634
|
|||
|
date: 2008-07-06
|
|||
|
url: /2008/07/06/_1035/
|
|||
|
wordtwit_post_info:
|
|||
|
- 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4121;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}'
|
|||
|
categories:
|
|||
|
- C
|
|||
|
- Programming
|
|||
|
|
|||
|
---
|
|||
|
<div class="section">
|
|||
|
<h4>
|
|||
|
可変長引数
|
|||
|
</h4>
|
|||
|
|
|||
|
<p>
|
|||
|
stdarg.hをインクルードする必要があるらしい。
|
|||
|
</p>
|
|||
|
|
|||
|
<pre class="syntax-highlight">
|
|||
|
<span class="synComment">/* ======================= */</span>
|
|||
|
<span class="synComment">/* === Include library === */</span>
|
|||
|
<span class="synComment">/* ======================= */</span>
|
|||
|
<span class="synPreProc">#include </span><span class="synConstant"><stdio.h></span>
|
|||
|
<span class="synPreProc">#include </span><span class="synConstant"><stdarg.h></span>
|
|||
|
<span class="synPreProc">#include </span><span class="synConstant"><assert.h></span>
|
|||
|
<span class="synComment">/* ================= */</span>
|
|||
|
<span class="synComment">/* === Functions === */</span>
|
|||
|
<span class="synComment">/* ================= */</span>
|
|||
|
<span class="synType">void</span> tiny_printf(<span class="synType">char</span> *format, ...)
|
|||
|
{
|
|||
|
<span class="synType">int</span> i;
|
|||
|
<span class="synType">va_list</span> ap;
|
|||
|
va_start(ap, format);
|
|||
|
<span class="synStatement">for</span> (i = <span class="synConstant"></span>; format[i] != <span class="synSpecial">'\0'</span>; i++)
|
|||
|
{
|
|||
|
<span class="synStatement">switch</span> (format[i]){
|
|||
|
<span class="synStatement">case</span> <span class="synConstant">'s'</span>:
|
|||
|
printf(<span class="synConstant">"</span><span class="synSpecial">%s</span><span class="synConstant"> "</span>, va_arg(ap, <span class="synType">char</span>*));
|
|||
|
<span class="synStatement">break</span>;
|
|||
|
<span class="synStatement">case</span> <span class="synConstant">'d'</span>:
|
|||
|
printf(<span class="synConstant">"</span><span class="synSpecial">%d</span><span class="synConstant"> "</span>, va_arg(ap, <span class="synType">int</span>));
|
|||
|
<span class="synStatement">break</span>;
|
|||
|
<span class="synStatement">default</span>:
|
|||
|
assert(<span class="synConstant"></span>);
|
|||
|
}
|
|||
|
}
|
|||
|
va_end(ap);
|
|||
|
putchar(<span class="synSpecial">'\n'</span>);
|
|||
|
}
|
|||
|
<span class="synType">int</span> main(<span class="synType">void</span>)
|
|||
|
{
|
|||
|
tiny_printf(<span class="synConstant">"sdd"</span>, <span class="synConstant">"result..."</span>, <span class="synConstant">3</span>, <span class="synConstant">5</span>);
|
|||
|
<span class="synStatement">return</span> <span class="synConstant"></span>;
|
|||
|
}
|
|||
|
</pre>
|
|||
|
</div>
|