提问:没有参数的情况下 agrc的值为什么是1?
题目:编写一个程序,不接受任何命令行参数或接受一个命令行参数。如果有一个参数,将其解释为文件名;如果没有参数,使用标准输入(stdin)作为输入。假设输入完全是浮点数。该程序要计算和报告输入数字的算术平均值
参考答案:
int main(int argc, char** argv)
{
FILE *fp;
double n, sum = 0.0;
int num = 0;
if(argc == 1) // 这一块看不懂
{
fp = stdin;
}
else if(argc == 2)
{
if((fp = fopen(argv[1], "r")) == NULL)
{
fprintf(stderr, "Open %s failed\n", argv[1]);
exit(EXIT_FAILURE);
}
}
else
{
fprintf(stderr, "Usage:%s [filename]\n", argv[0]);
exit(EXIT_FAILURE);
}
while(fscanf(fp, "%lf", &n) == 1)
{
num++;
sum += n;
}
if(num)
{
printf("%lf\n", sum / n);
}
else
{
puts("There is no number");
}
return 0;
}
argc至少为1,因为命令行下你至少需要输入exe文件名称。这第一个参数就是exe文件名称。
因此,要判断是否输入实际参数,以及获取实际参数,需要判断argc>1,实际参数从argv[1]开始,argv[0]就是应用程序名称