実行時に文字列の長さがわかっていると仮定して、printf を使用して null で終わらない文字列を出力するにはどうすればよいですか?
答え:
printf("%.*s", length, string);
他の引数と一緒に使用:
printf("integer=%d, string=%.*s, number=%f", integer, length, string, number);
// ^^^^ ^^^^^^^^^^^^^^
C では、出力する最大長を %.123s
で指定できます フォーマット。これは、出力の長さが最大で 123 文字であることを意味します。 123
*
に置き換えることができます 、ハードコードされたのではなく、printf の引数から長さが取得されるようにします。
これは string
を想定していることに注意してください %.123s
のように、内部ヌル バイト (\0) は含まれません。 最大のみを制限します 正確ではない長さ 長さ、および文字列は引き続き null で終了するものとして扱われます。
null で終了しない文字列を内部 null で出力したい場合、単一の printf を使用することはできません。 fwrite
を使用 代わりに:
fwrite(string, 1, length, stdout);
詳細な説明については、@M.S.Dousti の回答を参照してください。