命令行参数未正确传递

标签 c command-line

我正在编写一个可处理 BMP 文件的函数。我在传递命令行参数时遇到问题。

每当我使用调试器时,它都会说我的所有变量都已等于零。为什么是这样?我希望它等于命令行参数。

int main(int argc, char** argv)
{
    int side_length = 200;
    int x_offset = 0;
    int y_offset = 0;
    double r = 1.0;
    double g = 1.0;
    double b = 1.0;
    for(int i = 1; i < argc - 1 ; i++)
    {
        if(strcmp(argv[i], "-s"))
        {
            side_length = atoi(argv[i+1]);
        }
        else if(strcmp(argv[i], "-x"))
        {
            x_offset = atoi(argv[i+1]);
        }
        else if(strcmp(argv[i], "-y"))
        {
            y_offset = atoi(argv[i+1]);
        }
        else if(strcmp(argv[i], "-r"))
        {
            r = atof(argv[i+1]);
        }
        else if(strcmp(argv[i], "-g"))
        {
            g = atof(argv[i+1]);
        }
        else if(strcmp(argv[i], "-b"))
        {
            b = atof(argv[i+1]);
        }
    }
    draw_waves(side_length, x_offset, y_offset, r, g, b);
    return 0;
}

最佳答案

strcmp() 当两个字符串相等时返回 0,所以你应该这样做:

if(strcmp(argv[i], "-s") == 0)

关于命令行参数未正确传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43669826/

相关文章:

unix - 差异和 "--GTYPE-group-format"

visual-studio - Visual Studio 构建后事件中的路径

rest - 如何从命令行使用 BigQuery REST API?

c++ - 需要对表达式进行解释

c++ - 禁用优化时没有 "may be used uninitialized"

c - 将二叉树打印到用户提供的文件中

android - 如何从命令行重建和运行 android 项目

c++ - 2D 图形加速

c - CD-ROM 驱动器上的随机查找

command-line - 从 Cygwin 运行 Windows native 命令(例如 VOL)