C语言中main()函数的高级用法

熟悉C语言的朋友们都知道mian()函数是普通C语言 程序的入口函数,有两种标准的原型:

int main();
int main(int argc,char *argv[]);

第一种原型简单且友好,能让初学编程的朋友快速入手。
今天我想谈谈它的第二个原型,它可以在程序运行时传入参数,还是挺有意思的。
给程序传入参数的一种简单的方法就是通过控制台运行,Windows下通过cmd(命令提示符),Linux下通过终端(terminal);
在第二个原型中,argc表示传递的字符串的数目,argv是一个指针数组,每一个指针指向一个字符串,也可以说是一份数据;来看一个具体的例子:

#include<stdio.h>
int main(int argc,char *argv[])
{
	int m;
	printf("程序接收的参数%d:\n",argc);
	for(m=0;m<argc;m++)
	{
		printf("%s\n",argv[m]);
	}
	return 0;
}

从运行结果可以看出,包括程序名以及它后面的字符串都会被程序接收
从运行结果可以看出,包括程序名以及它后面的字符串都会被程序接收。

通过上面的讲解,大家基本上都了解了其高级用法的基础。其实它在Linux中的shell编程中有十分实际的应用,每一个shell命令需要一个程序来解释,当这个程序是由C语言编写的,那么main()函数就可以接收这个命令以及它后面的附加参数。
下面我们来看一个简单的实际的应用:

#include <stdio.h>
#include <math.h>
#include <stdlib.h>

int isPrime(int n);

int main(int argc, char *argv[])
{
    int i, n, result;
    if(argc <= 1)
    {
        printf("Error: no input integer!\n");
        exit(EXIT_SUCCESS);
    }
    for(i=1; i<argc; i++)
    {
        n = atoi(argv[i]);
        result = isPrime(n);
        if(result < 0)
        {
            printf("%3d is error.\n", n);
        }
        else if(result)
        {
            printf("%3d is prime number.\n", n);
        }
        else
        {
            printf("%3d is not prime number.\n", n);
        }
    }
    return 0;
}

//判断是否是素数
int isPrime(int n)
{
    int i, j;
    if(n <= 1)
    {  //参数错误
        return -1;
    }
    else if(n == 2)
    {  //2是特例,单独处理
        return 1;
    }
    else if(n % 2 == 0)
    {  //偶数不是素数
        return 0;
    }
    else
    {  //判断一个奇数是否是素数
        j = (int)sqrt(n);
        for(i=3; i<=j; i+=2)
        {
            if (n % i == 0)
            {
                return 0;
            }
        }
        return 1;
    }
}

这是一个判断是否是素数的小程序,大家可以尝试尝试coding体验一下,将知识化为实际用途。

发布了8 篇原创文章 · 获赞 8 · 访问量 930

猜你喜欢

转载自blog.csdn.net/weixin_44225901/article/details/104286864