2016-11-26 4 views
0

私は、このプログラムは、コマンドライン引数、私はコマンドライン引数の代わりにランタイム入力をしたい、それを行うには?

などを取る

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

    //################################ 
    // Variables 
    //################################ 

    // common 
    int num_of_params; // number of command-line parameters 

    // related to files 
    //string data_filename; 
    char data_filename[CHUNK_BUF_SIZE];    // input file path 

    int data_filesize = 0;  // data file size 

    // related to chunks 
    int fd;      // file descriptor to check boundary 
    int size;      // size of input data 
    unsigned char *buf;   // input data 

    int offset  = 0;  // file offset 
    int chunk_b_pos = 0 ;  // beginning position of a chunk in a file 
    int chunk_e_pos = -1;  // ending position of a chunk in a file 
           // *** NOT 0 ** due to "set_breakpoint() in chunk_sub.c" 
           // 
    int cur_chunk_size = 0;  // !!!! Accumulated chunk size !!!! 
           // This value is compared to minimum chunk size and maximum chunk size 

    int chunk_index_fd;   // file which contains chunk indexes for a document 
    char chunk_index_filepath[CHUNK_BUF_SIZE];  // chunk index file path 


    // parameters 
    int avg_chunk_size;   // expected averge chunk size 
    int min_chunk_size;   // minimum chunk size 
    int max_chunk_size;   // maximum chunk size 

    // temporary command 
    char cmd[CHUNK_BUF_SIZE]; 

    int num_of_breakpoints = 0; 


    //################################ 
    // Check parameters 
    //################################ 
    // get number of command-line parameters 
    num_of_params = argc - 1; 

    if (num_of_params != 4) 
    { 
    printf("usage : %s <input file> <expected avg chunk size> <min chuk size> <max chunk size>\n", 
      argv[0]); 
    printf("e.g. %s body 8192 2048 65535\n", argv[0]); 
    printf("***  try to change 1024 to 2048, 4096, and 8192, and see results\n"); 
    exit(1); 
    } 


    strcpy(data_filename, argv[1]); // input data filename 
    avg_chunk_size = atoi(argv[2]); 
    min_chunk_size = atoi(argv[3]); 
    max_chunk_size = atoi(argv[4]); 

、このコードスニペットを持っています。 > 8192ボディはファイル名であり、他の人がチャンクはパラメータであり、2048 65535

チャンク本体

私の質問私はプログラムの実行中に入力をしたい、コマンドラインパラメータをたくないです。どうやってするの。ここで

+1

まず、使用する言語(CまたはC++)を調べます。 –

+0

C++言語... – Anand

+1

その後、実際にC++コードを書くことから始められます。つまり、エラーが発生しやすい 'char'配列の代わりに' std :: string'を使用し、Cライブラリ 'printf()'の代わりに 'std :: cout'に出力を出すことを意味します。対話的に入力を読み込むには 'operator ::'を 'std :: cin'と一緒に使うと、C++の本でこれを行う例がたくさんあります。 –

答えて

0

は、C++を使用して実行時の入力を取る方法の例です:

#include <iostream> 
#include <cstdlib> 
int main(void) 
{ 
    std::cout << "Enter a number: "; 
    int number; 
    std::cin >> number; 
    std::cout << "\nYour number is: " << number << "\n"; 

    std::cout << "\n\nPaused. Press Enter to continue.\n"; 
    std::cin.ignore(1000000, '\n'); // Wait for Enter to be pressed. 
    return EXIT_SUCCESS; 
} 

std::cin >> numberは、」C++を使用して、標準入力からの入力方法にあります。

ファイルから読み取るには、std::ifstreamを使用してファイルを作成します。より多くの例については、インターネットで "C++ ifstream open file"を検索してください。

+0

行指向の対話型入力処理で 'operator >>'を使用するという悪い習慣を奨励しません。ここで問題となるのは、その方向で迷ってしまった失われた魂からのもので、 'fail()' 'std :: cin'や' ''と '' getline'の混合で終わります。主要なクラスターフラスク。一貫して 'getline()'を常に行指向の入力とともに使用してください。 –

+0

ありがとう、トーマスとサム.. – Anand

関連する問題