George Gall
George Gall

Reputation: 45

c++ program won't output as expected

I'm writing a program to familiarize myself with input and command line arguments.

I'm trying to scan the user's input for either 'a' or 'b', and if it matches print the next argument given out. For some reason no matter what the user enters it always outputs as "Invalid." Can anyone see what I might be doing wrong?

int main(int argc, char* argv[])
{
    if(argc != 5)
    {   //checks if input is blank
        cout << "Usage: <Function>, String, Usage: <Function>, String," << endl;
    }
    else
    {
        for(int i = 1; i<argc; i++)
        {
            cout << argv[i] << endl;

            if(argv[i][1] == 'a')
            {
                cout << argv[i] << "ASCII" << endl;
            }
            if(argv[i][1] == 'b')
            {
                cout << argv[i] << "BINARY" << endl;
            }
            else
            {
                cout << "incorrect format" << endl;
            }
        }
    }
}

Upvotes: 2

Views: 75

Answers (1)

paxdiablo
paxdiablo

Reputation: 881423

argv[i][1] is the second character of the string argv[i] because arrays in C++ are zero-based.

I think you may want to use argv[i][0] instead, the first character.

See the following code for a sample:

#include <iostream>
int main(int argc, char *argv[]) {
    for (int i = 1; i < argc; i++) {
        std::cout << "   Argument: " << argv[i] << '\n';
        std::cout << "      First: " << argv[i][0] << '\n';
    }
    return 0;
}

Running that as per the following transcript, gives the expected output:

pax> testprog alpha beta gamma delta epsilon
   Argument: alpha
      First: a
   Argument: beta
      First: b
   Argument: gamma
      First: g
   Argument: delta
      First: d
   Argument: epsilon
      First: e

Upvotes: 4

Related Questions