• ベストアンサー

sprintfの書式について

sprintf( text, "全体容量:%12I64u Byte", i64Total.QuadPart); の 12I64u の意味を教えてください。 uは符号無しの10進で良いですか? 12とIと64がわかりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.6

> 詳細については・・・ > これを見逃していたのです。 なるほど、確かに軽く眺めるだけではそこは見逃すかもしれないですね。 ただ、sprintfの仕様にまではたどり着いていたわけですから、 全く検索できなかったわけでも無いと思います。 今回知りたかったのはsprintfのパラメータの仕様なのですから そういう意識でパラメータという節に注意して読めばたぶん見つけられたのではないかと思います。 (私はそんな感じで情報を辿りました。) > 最初に5,460 件もヒットしていたので。 > どうやって探そうかとパニックになっていました。 これはとりあえず上の方だけ見ればよいですよ。 とくに、今回の場合1件目でsprintfの仕様がちゃんとヒットしてますからね。 普段Webページの検索結果見るときも 上位数件か多くても数十件しか見ないと思います。 (そして、それでも目的のものがなかったら他の手を考える。) > 検索文字を複数にしても%12I64uではヒットするはずはありませんからね。 これは難しいですね。 I64u とか I64 ならヒットしましたが、 何も分からない状態からそれをひらめくのはなかなか難しい。 まあ、分からないときに原典に当たるのは大事なことですし、 今回見つけられなかったことに懲りずに 分からないときはまた検索してみてください。

7777777v
質問者

お礼

再度にわたり、かなり丁寧に回答いただきありがとうございました。 しかし今回の質問の的確な回答ではありませんが、VC++に関する検索はご指摘のサイトをお気に入り登録で充分活用いたします。すべての項目でサンプルコードが付記されていれば満点なのですが・・・ 解らないことを検索する訳ですから当然、検索語も的を得ていないことになり目的の情報になかなか辿り着けないのが現状です。 特に専門的な用語はすべて把握できないのが、素人の悲しいところではあります・・・ハイ。

その他の回答 (5)

  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.5

> http://msdn.microsoft.com/ja-jp/ > ここでも"sprintf"が検索できませんでした。 左上の「BingでMSDNを検索」と書いてあるところからsprintfを検索 → http://social.msdn.microsoft.com/Search/ja-JP?query=sprintf&ac=4 1番目のリンクをクリック → http://msdn.microsoft.com/ja-jp/library/ybk95axf%28v=VS.80%29.aspx の「詳細については、「printf 関数と wprintf 関数の書式指定フィールド」を参照してください。」のリンクへ → http://msdn.microsoft.com/ja-jp/library/56e442dc%28v=vs.80%29.aspx 上記の流れで1分とかからずに情報にたどり着けたのですが、 どうやって検索したのでしょうか?

7777777v
質問者

お礼

ご参加ありがとうございます。 検索窓は右上にありました。 sprintf についての結果、約 5,460 件中 1-20 件 >・・・1番目のリンクをクリック これは検索結果の最初のURLということでしょうか? すると中間当たりに 詳細については、「printf 関数と wprintf 関数の書式指定フィールド」を参照してください。 がありました。 詳細については・・・ これを見逃していたのです。 最初に5,460 件もヒットしていたので。 どうやって探そうかとパニックになっていました。 検索文字を複数にしても%12I64uではヒットするはずはありませんからね。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.4

%12I64uというのは規格上は未定義の動作です。 ただし、特定の処理系が動作を定義している場合もあります。 Visual C++やBorland C++ Compilerがそうで、その意味についてはすでに回答が出ているとおりです。 なお、標準規格では、符号無し64ビット整数を指定する書式は次のようになります。 "%12" PRIu64

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

では、検索のコツを。 C言語には、標準として決められた部分と、それぞれのコンパイラ/ライブラリで独自に追加した部分とかがあります。 解説書や解説サイトでは、主に、前者の説明がされています。 特に入門者向けだと、そのうちのよく使われるものだけの解説になっていることが多いです。 ですから、これらを探すだけでは、わからないこともあります。 そんなときは、より「原典」に近いものを探します。 今回の場合、使用しているのは WindowsのVisual C++ ではないでしょうか? Visual C++は独自拡張が目立つコンパイラです。 それならば、 MSDN が「原典」です http://msdn.microsoft.com/ja-jp/ また、GCCも独自拡張の多いコンパイラです。 コンパイラ自体は http://www.gnu.org/software/gcc/ 標準ライブラリは http://www.gnu.org/software/libc/ が「原典」になります。

7777777v
質問者

お礼

親切に、ご指導頂きありがとうございます。 http://msdn.microsoft.com/ja-jp/ ここでも"sprintf"が検索できませんでした。 GCCのご案内のサイトは英語で英語が出来ない私にとって閲覧が困難です。 当分VC++で頑張ります。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

マニュアル読みましょうよ。 ○ 12 その場所に来るのは、フィールド幅です。 http://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/printf.3.html#lbAH ○ I64 その場所には、長さ修飾子と呼ばれるものが来ます。 http://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/printf.3.html#lbAJ ただ、通常はI64なんてものはありません。 で、調べると、Visual C++ には該当するものがありました http://msdn.microsoft.com/ja-jp/library/vstudio/56e442dc.aspx

7777777v
質問者

お礼

ネットで検索したのですが、解説しているサイトを見つけられませんでした。 回答頂いたページで勉強します。 ありがとうございました。

  • honor
  • ベストアンサー率35% (25/71)
回答No.1

%I64uや%I64dは64bit整数の書式制御文字です。 12は表示する桁数ですね。

7777777v
質問者

お礼

桁数は何となくわかるのですが、I64は大きな数字を使う時に必要なようですね。 よくわかりました。 ありがとうございました。

関連するQ&A

専門家に質問してみよう