2016-11-26 1 views
0

ich diesen Code-Schnipsel haben,Ich möchte Laufzeiteingabe anstelle von Befehlszeilenargument nehmen, wie es geht?

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]); 

dieses Programm Kommandozeilen-Argument,

zB. Dateinamen und andere sind Chunk Parameter

meine Frage ist, möchte ich nicht Kommandozeilenparameter> Chunk Körper 8192 2048 65535

wo Körper, ich möchte Eingang nehmen, während das Programm ausgeführt wird. wie es geht.

+1

Der erste Schritt ist, herauszufinden, welche Sprache Sie verwenden möchten: C oder C++. –

+0

C++ Sprache ... – Anand

+1

Dann können Sie beginnen, indem Sie tatsächlich C++ - Code schreiben. Das bedeutet, anstelle von fehleranfälligen 'char'-Arrays' std :: string' zu verwenden und Ausgaben an 'std :: cout' zu senden, anstatt die C-Bibliothek' printf() 'zu verwenden. Und um Eingaben interaktiv zu lesen, benutzen Sie 'operator >>' mit 'std :: cin', und Sie werden viele Beispiele dafür in Ihrem C++ Buch finden. –

Antwort

0

Hier ist ein Beispiel dafür, wie Laufzeiteingabe nehmen 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; 
} 

Die „std::cin >> number“ ist, wie von der Standardeingabe zur Eingabe von C++.

Um aus einer Datei zu lesen, verwenden Sie std::ifstream, um die Datei zu erstellen. Suchen Sie im Internet nach "C++ ifstream open file".

+0

Lassen Sie uns nicht die schlechte Angewohnheit der Verwendung von 'Operator >>' mit line-orientierten interaktiven Eingabe Verarbeitung ermutigen. Ein guter Teil der Fragen ist hier von verlorenen Seelen, die in diese Richtung verführt werden und enden mit 'fail()' ed 'std :: cin', oder einer Mischung aus' >> 'und' getline', die zu a führen Hauptclusterfracas. Verwenden Sie 'getline()' immer mit linienorientierter Eingabe, konsistent. –

+0

danke thomas und sam .. – Anand

Verwandte Themen