检查命令行参数 - C 编程

Check if Command Line Argument - C Programming

我正在尝试编写代码,说明如果有命令行输入则执行某些操作(如果没有则执行其他操作)。

int main(int argc, char *argv[])
{
    int lowerBound, upperBound, i, count = 0;
    float val;
    char c;

    if(argc = 2)
    {
        lowerBound = argv[1];
        printf("Lower bound = %d", lowerBound);

        item * curr, * head;
        head = NULL;

        do
        {
            printf("Enter a number: ");
            scanf("%f", &val);
            curr = (item *)malloc(sizeof(item));

            if(val >= lowerBound)
            {
                curr->num = val;
                curr->next = head;
                head = curr;
                count++;
            }

            getchar();
            printf("Want to enter another number (y/n):  ");
            scanf("%c", &c);
        } while( c != 'n' && c != 'N' );

        curr = head;

        float largest = findLargest(curr);
        float lowest = findSmallest(curr);
        float mean = findMean(curr, count);
        int ValuesAboveMean = valuesAboveMean(curr, mean);
        int ValuesBelowOrAtMean = valuesBelowOrAtMean(curr, mean);
        float median = findMedian(curr, count);
        show(count, lowest, largest, mean, median, ValuesAboveMean,    ValuesBelowOrAtMean);
    }
    else if(argc = 3)
    {
        lowerBound = argv[1];
        upperBound = argv[2];
        printf("Lower bound = %d", lowerBound);
        printf("Upper bound = %d", upperBound);
        item * curr, * head;
        head = NULL;

        do
        {
            printf("Enter a number: ");
            scanf("%f", &val);
            curr = (item *)malloc(sizeof(item));

            if(val >= lowerBound && val <= upperBound)
            {
                curr->num = val;
                curr->next = head;
                head = curr;
                count++;
            }

            getchar();
            printf("Want to enter another number (y/n):  ");
            scanf("%c", &c);
        } while( c != 'n' && c != 'N' );

            curr = head;

            float largest = findLargest(curr);
            float lowest = findSmallest(curr);
            float mean = findMean(curr, count);
            int ValuesAboveMean = valuesAboveMean(curr, mean);
            int ValuesBelowOrAtMean = valuesBelowOrAtMean(curr, mean);
            float median = findMedian(curr, count);
            show(count, lowest, largest, mean, median, ValuesAboveMean, ValuesBelowOrAtMean);
        }
        else if(argc = 1 or argc = 0 or argc = NULL)
        {
            item * curr, * head;
            head = NULL;

            do
            {
                printf("Enter a number: ");
                scanf("%f", &val);
                curr = (item *)malloc(sizeof(item));

                curr->num = val;
                curr->next = head;
                head = curr;
                count++;

            getchar();
            printf("Want to enter another number (y/n):  ");
            scanf("%c", &c);
        } while( c != 'n' && c != 'N' );

         curr = head;

        float largest = findLargest(curr);
        float lowest = findSmallest(curr);
        float mean = findMean(curr, count);
        int ValuesAboveMean = valuesAboveMean(curr, mean);
        int ValuesBelowOrAtMean = valuesBelowOrAtMean(curr, mean);
        float median = findMedian(curr, count);
        show(count, lowest, largest, mean, median, ValuesAboveMean, ValuesBelowOrAtMean);
        }

目前出于某种原因,它会忽略 if 语句中的内容和 运行s if 中的任何内容。例如,即使我没有命令行参数,它仍然想要 运行 第一个 if where arg = 2。

我做错了什么,我该如何解决?

你需要这样做 if(argc == 2)

(而不是 if(argc = 2),它将 2 分配给 argc 并且永远为真)。我从不喜欢 C 定义 = 与 == 的方式。一些编译器会为此产生警告。