こんにちは、現役エンジニアの inno_tech です。
C言語のプログラムで、printf で長文を出力する際、”ソースコード上のみ改行したい“、という場面があったので備忘録です。
真っ先に思い浮かぶのは”長文を複数に分割し、printf文を複数記述する” という方法ですが、ソースコードが見づらいという問題があります。
そこで、ソースコードを汚さないもっと良い方法を見つけました。
もくじ
解決方法
各行ごとにダブルクォーテーションで囲った文字列並べる という方法でOKでした。
注意点として、各行ごとにダブルクォーテーションで区切る, 各行の末尾はカンマ区切りしない を意識してください。
void TestPrintf_001()
{
printf("** test1: 長い文字列のprintf **\n" );
// OK
printf("長文になってしまった場合は"
"文字列リテラルをカンマで区切らずに記述すればよいです。"
"改行はされません。\n"
);
// NG | 各行でダブルクォーテーションで囲まないとエラー
printf("各行の文末をダブルクォーテーションで
区切らない場合はコンパイルエラー。\n" );
// NG | 各行末にバックスラッシュをつけても正しく出力されません
printf("各行の文末にバックスラッシュをつけても \
正しく出力されません。\n" );
return ;
}
出力結果は以下です。改行されず1行で出力できています。
** test1: 長い文字列のprintf **
長文になってしまった場合は文字列リテラルをカンマで区切らずに記述すればよいです。改行はされません。
応用バージョン — 変数を表示する場合
複数個のダブルクォーテーションがあったとしても、通常のprintfと同様に書式指定子と引数を渡せばOKです。
void TestPrintf_002()
{
int data1 = 10;
int data2 = 20;
printf("** test2: 長い文字列のprintf(変数あり) **\n" );
printf("長い文字列(1行目)"
"(2行目) data1 = %d,"
"(2行目) data1 = %d\n"
, data1, data2);
return ;
}
出力結果は以下です。改行されず1行で出力しつつ、変数の値も正しく出力できました。
** test2: 長い文字列のprintf(変数あり) **
長い文字列(1行目)(2行目) data1 = 10,(2行目) data1 = 20
最後に
話は変わりますが、ビジネス書グランプリ2021 自己啓発部門賞 を受賞したビジネス書はチェックしましたか?
もしまだチェックしていないのであれば目次だけでも見ておきましょう。
リンク
今なら kindle unlimited で読み放題 の対象でした。
月間980円で対象の本が読み放題、さらに30日間の無料体験付きでとても評判の良いサービスです。
参考になったでしょうか。
ほかにも役立つ情報が他のページにもあるかもしれません。
ご覧いただいても、ご覧いただかなくてもどちらでもどうぞ!
この記事がイイねと思ったら、Twitterフォロー か にほんブログ村のどちらかしてくれたら嬉しいよ!
コメント / ご要望