2

プログラムを作成していますが、テキストファイルから入力を取得し、出力をテキストファイルに保存するようにプログラムを設定する必要があります。私はXcodeを使用していて、Macを使用しています。コンソールにいくつかのリダイレクトコマンドを入力する必要があることはわかっていますが、その方法が正確にはわかりません。たとえば、テキストファイルはinput.txtとoutput.txtを自由に使用できます。

お手伝いありがとう。

4

2 に答える 2

1

ターミナル(コマンドライン)で実行できます

command < input.txt > output.txt

また

cat input.txt | command > output.txt

編集:

Ok, thanks a lot. Just curious, when I type that in the terminal, 
how does it know to go to Xcode?

ターミナルでコマンドを実行することとXcodeの間の唯一の接続は、Xcodeでプログラムをビルドすることです。これにより、Xcodeまたはシェル(ターミナル)から実行できる実行可能ファイルが生成されます。ターミナルでプログラムを実行しても、Xcodeにはまったく影響しません。

Xcode内からI/Oをリダイレクトする方法があるかもしれませんが(おそらくそれはあなたが最初に望んでいたものです)、私はそれを知りません(Xcodeを使用しないでください)。

于 2012-11-11T23:20:50.593 に答える
1

コンパイルされたコマンドラインプログラムの標準の入力、出力、またはエラーをリダイレクトすることをXcodeに伝えることは、不可能ではないにしても難しいようです。Program> Scheme> Edit Schemeメニューは、シェルのリダイレクト演算子<および>とは異なるアプリケーション「ArgumentsPassesOnLaunch」[Cmd+<]でのみ役立ちます。ターミナルとXcodeとの接続がないようです。これは、そのような外部シェルから起動されたプログラムをデバッグできないことも説明しています。

依存関係のない基本的な回避策として、いくつかのサイトでは、このリダイレクトをプログラムのコードに組み込むことを提案しています。これは、次のようにApplemacOSに対して条件付きで実行することもできます。

#ifdef __APPLE__
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    freopen("error.txt", "w", stderr);
#endif

もう少し手の込んだ例では、まったく同じ[製品スキーム]タブで設定でき、次のようなプログラムコードを持つことができる「環境変数」を活用します。

#include <stdlib.h>

#ifdef __APPLE__
        if (getenv("STDIN")) {
            if (!freopen(getenv("STDIN"), "r", stdin)) {
                NSLog(@"Unable to redirect stdin to '%s'\n", getenv("STDIN"));
            }
        } else {
            NSLog(@"Unknown environment variable STDIN so assuming stdin\n");
        }
        if (getenv("STDOUT")) {
            if (!freopen(getenv("STDOUT"), "w", stdout)) {
                NSLog(@"Unable to redirect stdout to '%s'\n", getenv("STDOUT"));
            }
        } else {
            NSLog(@"Unknown environment variable STDOUT so assuming stdout\n");
        }
#endif
于 2020-12-03T10:10:36.610 に答える