繁体   English   中英

如何将argv与元素数组进行比较?

[英]How can I compare argv with an array of elements?

我试图查看我创建的键数组是否包含来自argv的命令行参数,但我不断收到错误消息:

"incompatible pointer types passing 'char **' to parameter of type 'const char *';"

如何将代码中找到的这两个参数相互比较?

char *scale_array[] = {"A", "A#", "B", "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#"};

    for (int i = 0; i < (sizeof(scale_array) / sizeof(char)); i += 1) {
        if (strcmp(argv, scale_array[i]) == 0) {
            printf("Found it!");
        }
        else {

        }
char *scale_array[] = {"A", "A#", "B", "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#"};

for (int i = 0; i < (sizeof(scale_array) / sizeof(char)); i += 1) {
    if (strcmp(argv[1], scale_array[i]) == 0) {
        printf("Found it!");
    }
    else {

    }

假设您的单个命令行参数位于argv[1] ,这是通常的情况。

请记住,argv是指向字符数组的指针的向量。

您没有正确使用argv来访问命令行输入字符串。 同样size of arraysize of array也必须像这样确定(在您的情况下)

(sizeof(scale_array) / sizeof(char*))

这是带有多个命令行输入的修改后的代码。

int main(int argc, char** argv)
{
    char *scale_array[] = {"A", "A#", "B", "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#"};
    int j = 1;
    for (int i = 0; i < (sizeof(scale_array) / sizeof(char*)); i++)
    {
        if (strcmp(argv[j], scale_array[i]) == 0)
        {
            printf("Found it! %s \n", argv[j]);
            j++;    
            i = -1;
        }

        if(j == argc)
        {
            break;
        }
    }
    return 0;
}

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM