-2

\tを使用して文字列をさらに1タブ印刷する方法は誰もが知っています。

printf ("Hello\tthere!\n");

出力:

Hello    there!

1つのタブを逆方向に印刷するのはどうですか?\ rを使用して行の先頭からやり直すことができることはわかっていますが、インデントがそれよりも複雑な場合があります。\ bt(存在する場合)のようなものを探して、次のように記述できます。

printf ("Hello\tthere! \n\tHow\n\btare you?\n");

出力を取得するには:

Hello    there!
             How
         are you?

編集

ここでの返信の量と速さに驚いています。時にはコメントが役に立たないこともありますが、ほんのわずかです。私が達成しようとしていることは、もちろんこれよりも複雑です。XMLファイルを適切にフォーマットして読みやすくしています。もっと簡単な方法がないことを確認したかったのですが、応答は感謝がないことを確認しました。

編集2

申し訳ありませんが、この質問に反対票を投じるのは正しいことです。まず、テキストファイルに書き込んでいることを指定しなかったためです。次に、タブがファイルハンドラによって「記憶」されると想定していたためです。時間を無駄にしてすみません。

4

3 に答える 3

3

printfを使用すると、タブを明示的に実行する量を制御できます。タブを戻すには、使用するタブの数を減らします。提供した例から、タブレベルが記憶されていることを期待しているように見え、印刷時の実際よりもインデントされていますそこと同じタブストップに表示されますそしてあなたは?

と仮定して:

printf ("Hello\tthere! \n\tHow\n\btare you?\n");

あなたは見ることを期待しています:

こんにちは!
    どのように
あなたは?

それなら、前にタブを追加しないでください。そして、あなたはあなたが望むものを手に入れるでしょう。タブを少なくするには、 printfに追加する\t記号を少なくします。 printfには、以前に発生したタブの記憶がありません。

printf ("Hello\tthere! \n\tHow\nare you?\n");
于 2012-12-18T16:18:31.720 に答える
2

いいえ、やりたいことをするための特別なキャラクターはありません。の動作でさえ、\bプラットフォームに依存しています。

\bt単純なバックスペース文字の後に文字が続きtます。そのため、構文はサポートされていますが、特別な動作はありません。

しかし、なぜここでそれが必要なのですか?使用しない理由:

printf("Hello\tthere!\r\n\tHow\r\nare you?\n");
于 2012-12-18T16:09:05.737 に答える
1

「タブに戻る」方法はありませんが、他のオプションがあります。

あなたが指摘したように、\tあなたに前方のタブを与えます。

\bあなたにバックスペースを与えることができるので、あなたはそれで「バックアップ」することができます。

あまり使用されないものもいくつかあります。
\fフォームフィード/新しいページ(プリンターからページを取り出す)
\vは垂直タブです(同じ列で1行下に移動します)

したがって、他のオプションを使用して、必要なものをシミュレートできます。

printf("Hello, this is\n\t\tjust a test.\n");
printf("Hello, this is\v\b\bjust a test.\n");

最終的には次のようになります。

Hello, this is
        just a test.
Hello, this is
    just a test.

次に、次のようなコードを使用してコードを簡略化できます。

#define BACKTAB "\v\b\b"

printf("Hello, this is%sjust a test.\n", BACKTAB);

それがあなたにできる最善のことだと思います

于 2012-12-18T16:12:28.750 に答える