問題タブ [format-specifiers]
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.
python - %s 書式指定子がこのスニペットでキャッチされないのはなぜですか?
このスニペットを数回書き直しましたが、指定したデータに置き換えるのではなく、なぜ「%s」を印刷しているのか、私には意味がありません。なぜ機能しないのかを示すものは何も見つかりません。
c++ - size_tのprintfフォーマット指定子を修正してください:%zuまたは%Iu?
Microsoft Visual Studio2010を使用してC++で使用しているsize_t
変数の値を出力したい(この特定のコードではなく使用したいので、代わりに使用する必要があるという回答はありません)。printf
printf
<<
<<
投稿によると
プラットフォームに依存しない正しい方法はを使用すること%zu
ですが、これはVisualStudioでは機能しないようです。VisualStudioのドキュメント
http://msdn.microsoft.com/en-us/library/vstudio/tcxf1dw6.aspx
使用する必要があることを教えてくれます%Iu
(小文字i
ではなく大文字を使用l
)。
Microsoftはここの標準に準拠していませんか?または、C99以降に標準が変更されましたか?それとも、CとC ++の間で標準が異なります(これは私には非常に奇妙に思えます)?
c++ - C++ で %lld 指定子よりも cin、cout、または %I64d の使用が好まれるのはなぜですか?
多くのオンライン審査員が「С++ で 64 ビット整数の読み取りまたは書き込みに %lld 指定子を使用しないでください」とアドバイスする理由
cin、cout ストリーム、または%I64d
指定子?を使用することをお勧めします。
c - Cで]が表示されないのはなぜですか?
これは C での私のコード スニペットです。
これが表示されるはず[2]
です。そしてlen
こちらが3です。
ただし、このコードを実行すると表示されるのは[2
これはなぜですか?
c++ - テンプレート化された型の書式指定子
整数型でテンプレート化された C++ クラスがあります。
sscanf
そのクラスのどこかで、ファイルからいくつかの値を読み取るために使用したいとします。
int_type
フォーマット指定子は、 が組み込みの である場合にのみ正しく機能しますint
。
一般の書式指定子を処理するより良い方法はありますint_type
か?
c - scanf()、sscanf()、または fscanf() の %[] または %[^] 指定子は、入力をヌル終了文字配列に格納しませんか?
Beez Cガイド (LINK)%[]
がフォーマット指定子について語っていることは次のとおりです。
It allows you to specify a set of characters to be stored away (likely in an array of chars). Conversion stops when a character that is not in the set is matched.
この前提から生じるいくつかの基本的な質問を明確にしていただければ幸いです。
1)これらの 2 つの形式指定子によってフェッチされた入力はchar*
、文字配列または\0
終端文字 (文字列) を含む文字配列として (型の) 引数に格納されますか? 以下のプログラムのように、文字列を文字列としてフェッチし、特定の文字 (否定された文字セット内) に遭遇したときに停止したい場合、文字列ではない場合、文字列として格納するにはどうすればよいですか?
2)%[^|]
私のプログラムは、否定された文字が検出されたときに指定子の処理が停止することを示唆している|
ようです。を無視して|
使用したため、%*c
使用しましたが、テストしたところ%c
、タイプの追加の引数を使用するとchar
、文字|
が実際にその引数に格納されることがわかりました。
3)そして最後に、私にとって非常に重要なことですが、%s
書式指定子の文字配列を渡すことprintf()
と文字列 (NULL で終了する文字配列)を渡すことの違いは何ですか? character array vs string
) の%s
フォーマット指定子printf()
の場合、文字列と同じように出力されます。違いは何ですか?
//%[^] 指定子を説明するプログラム
//文字配列 vs 文字列
出力 JON
//%*c の代わりに %c を使用
出力 fruit,apple,lemon,and the character is |
c# - 値がゼロでない限り、先頭のゼロを省略する C# 形式指定子はありますか?
つまり、0.123 を「.123」と表示したいのですが、0 は「0」と表示する必要があります。現在、私が持っている最高のものは
0.123 の場合は ".123" になりますが、0 の場合は "" (空の文字列) になります。
java - 十分な引数がないときに String.format の MissingFormatArgumentException を克服する方法は?
Java では、次のことが問題ないことを知っています。
(印刷 "aaa")
ただし、次のような反対のことを処理できるようにしたいです。
(これにより、例外 java.util.MissingFormatArgumentException が生成されます)
指定子/パラメーターがいくつあっても、十分な値がない場合は、それらを無視して(問題のある位置からすべての指定子をスキップして)、残りの文字列を記述します(たとえば、私が示した場合、それは「aaabbb」と書きます)。
すぐに使用できますか、それを行う関数を作成する必要がありますか?
c - 「char list[3][10];」の場合 これらすべてが scanf() %s 引数 ---&list[i],list[i],&list[i][0] として機能するのはなぜですか?
のフォーマット指定子文字列で使用されるフォーマット指定子char*
の唯一の有効な引数タイプではありませんか?もしそうなら、私のプログラムでは、これらのそれぞれが と の両方の %s フォーマット指定子に対してまったく同じように機能するのはなぜですか?%s
scanf()
scanf()
printf()
この前提から生じる次の混乱を解消していただければ幸いです。
1)&name[i]
タイプであるchar (*)[]
のに、なぜ機能&name[i][0]
するのですchar*
か?
2)の引数として渡すと、name[i]
分解/変換されますか?入力した各名前の最初の文字のアドレスであるを渡すのと同じですか?なぜそれが機能するのですか?char*
%s
&name[i][0]
c - fscanf() を使用して、それぞれ 3 つの数字の行を含むファイルを読み取ると、「%d%d%d%*c」が「%d%d%d」と同じように機能するのはなぜですか?
%d
ここで使用される場合、フォーマット指定子fscanf()
は整数を読み取り、改行を含むその前の空白を無視することを知っています(私はそれを確認しました).しかし、 fscanf()
3で複数行のファイルから読み取るために使用する次のプログラムではそれぞれ整数、フォーマット文字列"%d%d%d%*c"
は と同じように機能し"%d%d%d"
ます。
なぜそうなのですか?フォーマット指定子文字列の最初のフォーマット指定子としてfscanf()
使用すると、整数の前にある空白が無視されるため、最後の指定子として使用される余分な文字列がエラーや副作用を引き起こさないのはなぜですか?指定子が行内の3つの数字の各グループの後に改行を追加すると、改行が食い尽くされるので理にかなっています.しかし、デフォルトで空白を無視しても、エラーや副作用なしで機能するのはなぜですか? %*c が食べる文字を見つけられず、指定子と入力の間に不一致がある場合、 fscanf() はスキャンを停止すべきではありませんか? 同じように、不一致があるときに停止することはありませんか?%d
%*c
%d
%*c
fscanf()
%d
fscanf()
scanf()
編集:使用しても機能します"%*c%d%d%d"
!! フォーマット指定子と最初の入力が一致しないと、後続の文字のスキャンと処理を停止するべきではありませんか?
ファイル内のデータの形式は次のdata.txt
とおりです。
出力: