2013-06-01 21 views
9

を読んで私は、コマンドライン Cに入力された場合。それをスキャンしなければならないのですか、それをアクセスする任意の方法がありますか?コマンドライン引数は、ファイル

私の質問は、自分のプログラムでmyfile.txtを使用する方法です。

int 
main(){ 
    /* So in this area how do I access the myfile.txt 
    to then be able to read from it./* 
+0

'fopen()'または 'open()'で開きます。 – Barmar

+0

ファイルを読む方法、または引数リストからファイル名を取得する方法についての質問はありますか? – Barmar

+0

UNIX系のシステムでは、プログラムを 'myprogram

答えて

11

あなたの主な機能としてint main(int argc, char **argv)を使用できます。

argc - プログラムへの入力引数の数になります。
argv - すべての入力引数へのポインタになります。

  • argcは2
  • argv[0]myprogramになりますようになります。

    だから、あなたはあなたのプログラムを実行するためにC:\myprogram myfile.txtを入力した場合。

  • argv[1]myfile.txtとなります。 read this、他のモードでファイルを開くための
    FILE *f = fopen(argv[1], "r"); // "r" for read

詳細can be found here

は、ファイルを読むために。

+0

'txt'ファイル名を' main'ではなく別の関数に渡すには? – Sigur

0

コマンドライン引数は単なるC文字列です。あなたは彼らと一緒にしたいことをすることができます。あなたの場合は、ファイルを開き、そこから何かを読んで閉じたいと思うかもしれません。

このquestion(および回答)が役に立つ場合があります。

2
  1. あなた

    int main(int argc, char* argv [])

    • このようなメインのargcは引数の数(引数が渡されていない場合、それはプログラムの名前を1に等しいです)

    • を指定宣言
    • argvは文字列の配列へのポインタです(少なくとも1つのメンバ - プログラムの名前を含みます)

    • あなたがそうのようなコマンドラインからファイルを読んでいました:

      :読書のため

      File* file_handle;

    • オープンfile_handle:C:\my_program input_file.txt

  2. は、ファイルハンドルを設定

    file_handle = fopen(argv[1], "r");

    • fopenはファイルへのポインタを返します。ファイルが存在しない場合はNULLを返します。 ARGV 1、あなたが引数として読み込みたいファイルが含まれている

    • 「r」は、あなたが使用して内容を読む

  3. (もっと他のモードhereに)読み込むためのファイルを開くことを意味し例fgets

    fgets (buffer_to_store_data_in , 50 , file_handle);

    • あなたがするchar *バッファを必要とします(そのような文字の配列など)にデータを格納する、第二の引数は、読み取りにどれだけ指定し、第三の最後に、ハンドル

      fclose(file_handle);

を閉じるファイル
  • へのポインタであります

    コマンドラインを使用することについて受け取っすべて行わ:)

  • 0

    すべての提案は正しいですが、 それはあなたにもTYを使用するように考えることができます私に聞こえますファイルの代わりにstdinと読まれた模様のパターンを作成し、配管でアプリを駆動してください。例えば、myfile > yourpgmです。 その後、scanfを使用して標準入力から読み取ることができます。 同様の方法で、stdout/stderrを使用して出力を生成することができます。

    1

    これはプログラミング101の方法です。当然のことながら、多くの時間がかかりますが、エラーチェックはまったく必要ありません。しかしそれはあなたを始めさせるでしょう。

    /* this has declarations for fopen(), printf(), etc. */ 
    #include <stdio.h> 
    
    /* Arbitrary, just to set the size of the buffer (see below). 
        Can be bigger or smaller */ 
    #define BUFSIZE 1000 
    
    int main(int argc, char *argv[]) 
    { 
        /* the first command-line parameter is in argv[1] 
         (arg[0] is the name of the program) */ 
        FILE *fp = fopen(argv[1], "r"); /* "r" = open for reading */ 
    
        char buff[BUFSIZE]; /* a buffer to hold what you read in */ 
    
        /* read in one line, up to BUFSIZE-1 in length */ 
        while(fgets(buff, BUFSIZE - 1, fp) != NULL) 
        { 
         /* buff has one line of the file, do with it what you will... */ 
    
         printf ("%s\n", buff); /* ...such as show it on the screen */ 
        } 
        fclose(fp); /* close the file */ 
    } 
    
    関連する問題