# main()函数高级用法 ## 接受用户输入数据 main() 是C语言程序的入口函数,有且只能有一个,它实际上有两种标准的原型: ```c int main(); int main(int argc, char *argv[]); ``` 前面的教程中我们一直使用第一种原型,它简单易懂,能让初学者很快入手。第二种原型在实际开发中也经常使用,它能够让我们在程序启动时给程序传递数据。 一个程序在启动时允许系统或用户给它传递数据,Windows 和 Linux 都支持,这些数据以字符串的形式存在,多份数据之间以空格分隔。也就是说,用户输入的多份数据在程序中表现为多个字符串。给程序传递数据的一种方法就是从控制台运行程序,在 Windows 下就是从 cmd(命令提示符程序)运行,在 Linux 下就是从终端(Terminal)运行。 在第二个原型中,argc 表示传递的字符串的数目,argv 是一个指针数组,每个指针指向一个字符串(一份数据)。我们来看一个具体的例子: ```c #include int main(int argc, char *argv[]) { printf("The program receives %d parameters: \n", argc); for (int i = 0; i < argc; i++) { printf("%s\n", argv[i]); } return 0; } ``` 如果什么也没有,只运行程序本身,那么只会输出1个参数,就是程序名。 main() 函数的第二种原型有非常实际的应用,在 Linux 中,每个 Shell 命令都需要一个程序来解释,如果这个程序是由C语言编写的,那么 main() 函数就可以接收这个命令以及它后面附带的参数。 【实用程序】判断用户输入的是否是素数。 ```c #include #include #include 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