检查命令行参数 - 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 定义 = 与 == 的方式。一些编译器会为此产生警告。
我正在尝试编写代码,说明如果有命令行输入则执行某些操作(如果没有则执行其他操作)。
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 定义 = 与 == 的方式。一些编译器会为此产生警告。