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

标签 c arrays

我正在尝试查看我创建的键数组是否包含来自 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 {

        }

最佳答案

您没有正确使用 argv 来访问命令行输入字符串。 此外,数组大小 必须像这样确定(在您的情况下)

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

希望这对您有所帮助。

关于c - 如何将 argv 与元素数组进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36161932/

相关文章:

iphone - 如何在附加的 C 数组中正确释放内存?

javascript - 将属性添加到同一索引处数组中索引处的对象

arrays - Swift-在不同的类中使用数组

java - 如何反转ArrayList输入?

PHP 创建 JSON 数组数组(数据来自 MySQL)

c# - 如何增量迭代大小为 n 的字节数组的所有可能值?

C 编程为什么在值之前打印垃圾?

c++ - 堆优化(但不限于)单线程使用

c - 为什么二维静态数组arr中,arr和*arr是一样的

c - 如何获取内部结构的大小