問題タブ [printf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - c printf %f のデフォルト精度とは?
私は興味がある:
あなたが行う場合printf("%f", number);
、ステートメントの精度は何ですか? つまり、小数点以下何桁まで表示されますか? このコンパイラは依存していますか?
c - What's the difference between %c and %C in printf?
I can only find references for small c. I assume that the capital C is for Unicode, but I'm not sure. For lower numbers, both output the same character.
objective-c - NSLog(...)不適切なフォーマット指定子は他の変数に影響しますか?
私は最近、NSLog(...)でこの奇妙な動作を追跡するために約30分を無駄にしました:
行(A)は期待される「num = 123、text = abc」を出力しますが、行(B)は「num = 123、text = (null)」を出力します。
明らかに、withを印刷するのlong long
は%d
間違いですが、なぜtext
nullとして印刷されるのか説明できますか?
c - stdoutへのwrite()とprintf出力がインターリーブされていませんか?
プログラムの出力(最初read
と最初write
がユーザーによって入力され、端末によってエコーされる)は次のとおりです。
printfの出力は、標準入力でCtrl + Dを押した後のものであり、後続の読み取りと一緒ではありません。なぜこれが起こるのですか?
c - scanf を使用してスペースを入力できるようにするにはどうすればよいですか?
次のコードを使用します。
ユーザーは自分の名前を入力できますが、 のようLucas Aardvark
にスペースを含む名前を入力すると、 のscanf()
後のすべてが切り捨てられますLucas
。scanf()
スペースを許可する方法
c - 0で埋められたポインターを表示するためのprintfの適切な使用法は何ですか
C では、printf を使用してポインターを表示したいのですが、ポインターが適切に整列するように、ポインターを 0 で埋めたいと考えています。
私の推測では、これを行う適切な方法は次のとおりでした。
これは機能しますが、この gcc には次のメッセージが表示されます。
私はそれについて少しグーグルで調べました.次のスレッドは同じトピックに関するものですが、実際には解決策を提供していません.
http://gcc.gnu.org/ml/gcc-bugs/2003-05/msg00484.html
それを読むと、gcc が文句を言うのは、私が提案した構文が C99 で定義されていないことが原因のようです。しかし、標準的に承認された方法で同じことを行う他の方法を見つけることができないようです。
だからここに二重の質問があります:
- この動作は C99 標準で定義されていないという私の理解は正しいですか?
- もしそうなら、これを行うための標準的に承認されたポータブルな方法はありますか?
c - 次のプログラムが目に見える出力を生成しないのはなぜですか?
次のCプログラムは、画面に何も出力しません。
私はプログラムをコンパイルしましたgcc
:
c++ - float の値を小数点以下 2 桁まで出力する
たとえば、値が 57.400002 のフロートがあります。sprintf_s
GUIに値を表示するために使用します。
float を 57.40 として表示するようにフォーマットするにはどうすればよいですか?
c - sprintf(buffer、 "%s […]"、buffer、[…])は安全ですか?
このパターンを使用して、作業中のコードの文字列に連結するのを見ました。
そして私はそれが安全ではないとかなり確信していますC.あなたはそれbuffer
が出力と最初の入力の両方であることに気付くでしょう。
バッファオーバーフローの明らかな可能性は別として、関数の開始と終了の間でバッファが変更されないという保証はないと思います(つまり、バッファの状態が関数の実行)。sprintfのシグニチャは、ターゲット文字列がrestrict
edであることを追加で指定します。
memcpyでの投機的な記述の報告も思い出しますが、一部のCライブラリがsprintfで同じことを行う理由はわかりません。この場合、もちろん、それはそのソースに書き込みます。では、この動作は安全ですか?
参考までに、私は提案しました:
これを交換します。
c++ - Microsoft _stprintf 警告
次のコードに対して次の警告が表示される理由:)
コード:
警告 C4996: '_swprintf': swprintf は ISO C 標準に準拠するように変更され、余分な文字数パラメーターが追加されました。従来の Microsoft swprintf を使用するには、_CRT_NON_CONFORMING_SWPRINTFS を設定します。
_strprintf はマクロであり、_UNICODE が定義されている場合は _swprintf に評価され、それ以外の場合は sprintf になります。
さて、この _swprintf は何でしょう。関数 swprintf がありますが、_stprintf が swprintf ではなく _swprintf に評価されるのはなぜですか。
_xxx 関数と xxx 関数の違いは何ですか?
編集:
_stprintf の UNICODE バージョンには 2 つの定義がありますが、どちらが含まれていますか?
tchar.h または strsafe.h にあるものは?