c ++程序没有按预期输出

时间:2015-02-20 06:45:51

标签: c++

我正在编写一个程序来熟悉输入和命令行参数。

我正在尝试扫描用户输入的'a'或'b',如果匹配则打印下一个给出的参数。出于某种原因,无论用户输入什么,它总是输出为“无效”。谁能看到我可能做错了什么?

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;
            }
        }
    }
}

1 个答案:

答案 0 :(得分:4)

argv[i][1]是字符串argv[i]第二个字符,因为C ++中的数组是从零开始的。

我认为您可能希望使用argv[i][0]代替第一个字符。

请参阅以下代码以获取示例:

#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;
}

按照以下记录运行,给出预期的输出:

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