提问:没有参数的情况下 agrc的值为什么是1?

提问:没有参数的情况下 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]就是应用程序名称

main 函数中参数 argc和 argv 的设置_hunjiancuo5340的博客-CSDN博客 该篇文章主要是关于C++\C语言最基础的main函数的参数知识,是学习C++或C语言都必备的知识点.不知道你是否知道该知识?希望对大家有所帮助.一.main()函数参数通常我们在写主函数时都是void main()或int main() {..return 0;},但ANSI-C(美国国家标准协会,C的第一个标准ANSI发布... https://blog.csdn.net/hunjiancuo5340/article/details/80624512
img