lundi 7 septembre 2015

Check if Command Line Argument - C Programming

I am trying to write code that says if there is command line input then do something if not do something else.

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

For some reason or another currently, it ignores what is in the if statements and runs whatever is in the if. For instance, even if I have no command line arguments, it still wants to run the first if where arg = 2.

What am I doing wrong and how can I fix it?

Aucun commentaire:

Enregistrer un commentaire