タグ付けされた質問 「printf」

`printf`は、フォーマットされた出力の一般的な関数です。Cおよび他の多くの言語には、関連する関数のファミリ全体があります。このタグは、質問が「printf」または関連する関数に直接関係している場合にのみ使用してください。

13
printf()で後続ゼロを回避する
printf()ファミリーの関数のフォーマット指定子につまずきます。私が欲しいのは、小数点の後に指定された最大桁数のdouble(またはfloat)を印刷できるようにすることです。私が使用する場合: printf("%1.3f", 359.01335); printf("%1.3f", 359.00999); 私は得る 359.013 359.010 希望の代わりに 359.013 359.01 誰かが私を助けてくれますか?
107 c  printf 

13
printfの文字の埋め込み
プロセスが実行されているかどうかを表示するbashシェルスクリプトを書いています。 これまでのところ、私はこれを手に入れました: printf "%-50s %s\n" $PROC_NAME [UP] コードは私にこの出力を与えます: JBoss [DOWN] GlassFish [UP] verylongprocessname [UP] 2つのフィールド間のギャップを「-」または「*」で埋めて、読みやすくします。フィールドの配置を乱すことなくそれを行うにはどうすればよいですか? 私が欲しい出力は: JBoss ------------------------------------------- [DOWN] GlassFish --------------------------------------- [UP] verylongprocessname ----------------------------- [UP]
107 bash  shell  printf 


5
Pythonの文字列フォーマットの多くの方法—古いもの(廃止予定)は非推奨ですか?
Pythonには、少なくとも6つの文字列フォーマット方法があります。 In [1]: world = "Earth" # method 1a In [2]: "Hello, %s" % world Out[2]: 'Hello, Earth' # method 1b In [3]: "Hello, %(planet)s" % {"planet": world} Out[3]: 'Hello, Earth' # method 2a In [4]: "Hello, {0}".format(world) Out[4]: 'Hello, Earth' # method 2b In [5]: "Hello, {planet}".format(planet=world) Out[5]: 'Hello, …

1
Haskell printfはどのように機能しますか?
Haskellの型安全性は、依存型付けされた言語だけに勝るものはありません。しかし、Text.Printfには、いくぶん型崩れしているように見える深い魔法があります。 > printf "%d\n" 3 3 > printf "%s %f %d" "foo" 3.3 3 foo 3.3 3 これの背後にある深い魔法は何ですか?Text.Printf.printf関数はどのようにこのような可変引数を取ることができますか? Haskellで可変引数を可能にするために使用される一般的なテクニックは何ですか?それはどのように機能しますか? (補足:この手法を使用すると、タイプセーフの一部が明らかに失われます。) > :t printf "%d\n" "foo" printf "%d\n" "foo" :: (PrintfType ([Char] -> t)) => t

8
浮動小数点値の精度を維持するためのPrintf幅指定子
文字列をスキャンして戻すときに元の浮動小数点値が取得printfされるように、出力を必要な有効桁数に自動的にフォーマットする浮動小数点指定子に適用できる幅指定子はありますか? たとえば、floataを2小数点以下の精度で出力するとします。 float foobar = 0.9375; printf("%.2f", foobar); // prints out 0.94 出力をスキャンするとき0.94、元の0.9375浮動小数点値が返されることを保証する標準準拠の保証はありません(この例では、おそらくそうしません)。 に渡された元の値にスキャンして戻すことができるようにprintf、浮動小数点値を必要な有効桁数に自動的に出力する方法を教えてくださいprintf。 に渡す最大幅float.hを導出するためにいくつかのマクロを使用することができますprintfが、必要な有効桁数、または少なくとも最大幅に自動的に出力する指定子はすでにありますか?

7
Cでの16進文字の印刷
1行の文字を読み取ってから、その文字に相当する16進数を出力しようとしています。 たとえば"0xc0 0xc0 abc123"、最初の2文字がc016進数で残りの文字がabc123ASCIIであるという文字列がある場合、次のようになります。 c0 c0 61 62 63 31 32 33 ただし、printf使用%xすると ffffffc0 ffffffc0 61 62 63 31 32 33 なしで必要な出力を取得するにはどうすればよい"ffffff"ですか?そして、c0(および80)だけがを持ちffffff、他の文字はないのはなぜですか?
103 c  hex  printf 

11
単一の引数を持つprintf(変換指定子なし)が廃止されたのはなぜですか?
私が読んでいる本でprintfは、単一の引数(変換指定子なし)は非推奨であると書かれています。代用をお勧めします printf("Hello World!"); と puts("Hello World!"); または printf("%s", "Hello World!"); 誰かがなぜprintf("Hello World!");間違っているのか教えてもらえますか?本には、脆弱性が含まれていると書かれています。これらの脆弱性は何ですか?

4
uint32_tおよびsize_tのprintf形式指定子
私は以下を持っています size_t i = 0; uint32_t k = 0; printf("i [ %lu ] k [ %u ]\n", i, k); コンパイル時に次の警告が表示されます。 format ‘%lu’ expects type ‘long unsigned int’, but argument has type ‘uint32_t’ スプリントを使用してこれを実行すると、次の結果が得られました。 Format argument 1 to printf (%u) expects unsigned int gets size_t: k アドバイスありがとうございます。
101 c  printf 

5
「バックスペース」エスケープ文字「\ b」:予期しない動作?
だから私はようやくK&Rを読んでいて、最初の数ページの中で、バックスペースエスケープ文字があることを学びました\b。 だから私はそれをテストしてみると、いくつかの非常に奇妙な動作があります: #include <stdio.h> main () { printf("hello worl\b\bd\n"); } 出力は hello wodl 誰かこれを説明できますか?

9
C ++のprintf size_tへのクリーンなコード(または:C ++のC99の%zに最も近いもの)
を出力するいくつかのC ++コードがありますsize_t。 size_t a; printf("%lu", a); これを32ビットと64ビットの両方のアーキテクチャで警告なしにコンパイルしたいのですが。 これがC99の場合、を使用できますprintf("%z", a);。しかし、AFAICT %zは標準のC ++方言には存在しません。代わりに、私はしなければなりません printf("%lu", (unsigned long) a); これは本当に醜いです。 size_t言語に組み込まれたs を印刷する機能がない場合、適切なキャストをsize_tsに挿入して、適切なキャストを維持しながら、誤ったコンパイラ警告を排除できるprintfラッパーなどを作成できるかどうか疑問に思います。 何か案は? 編集私がprintfを使用している理由を明確にするために、私は整理している比較的大きなコードベースを持っています。printfラッパーを使用して、「警告を書き込み、それをファイルに記録し、場合によってはエラーでコードを終了する」などの処理を行います。coutラッパーを使用してこれを行うのに十分なC ++-fooを集めることはできるかもしれませんが、コンパイラの警告を取り除くためだけに、プログラムのすべてのwarn()呼び出しを変更したくありません。
96 c++  printf  size-t 

6
出力で同じ長さになるようにprintf()を使用して文字列をフォーマットする方法は?
私は2つの機能、のようなメッセージを生成する一つを有するStarting initialization...、別のどのチェックがコードおよび出力を返すを"Ok"、"Warning"または"Error"。ただし、生成される出力の長さは異なります。 Starting initialization...Ok. Checking init scripts...Ok. どのように私はこのようなものを得ることができます: Starting initialization... Ok. Checking init scripts... Ok.

8
printfで色を使用する
このように書くと、テキストが青で出力されます。 printf "\e[1;34mThis is a blue text.\e[0m" しかし、printfでフォーマットを定義したいのですが: printf '%-6s' "This is text" 今、私は色を追加する方法をいくつか試しましたが、成功しませんでした。 printf '%-6s' "\e[1;34mThis is text\e[0m" フォーマットに属性コードを追加しようとしても成功しませんでした。これは機能せず、私の場合のようにフォーマットが定義されているprintfに色が追加されている例はどこにも見つかりません。
90 linux  bash  colors  printf 


10
なぜprintf(“%f”、0); 未定義の動作を与える?
ステートメント printf("%f\n",0.0f); 0を出力します。 ただし、ステートメント printf("%f\n",0); ランダムな値を出力します。 ある種の未定義の動作を示していることに気づきましたが、具体的にその理由を理解できません。 全てのビットが0である、浮動小数点の値がまだ有効であるfloat0の値を持つ floatとint(つまりも関連している場合)、私のマシン上で同じサイズです。 なぜ浮動小数点リテラルの代わりに整数リテラルを使用すると、printfこの動作が発生するのですか? PS私が使用した場合と同じ動作が見られます int i = 0; printf("%f\n", i);

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.