**in()函数的高级用法:接收用户输入的数据
**in() 是C语言程序的入口函数?有且只能有一个?它实际上有两种标准的原型?
int **in();
int **in(int argc, char *argv[]);
平时我们一直使用第一种原型?它简单易懂?能让初学者很快入手。第二种原型在实际开发中也经常使用?它能够让我们在程序启动时给程序传递数据。
在第二个原型中?argc 表示传递的字符串的数目?argv 是一个指针数组?每个指针指向一个字符串?一份数据?。我们来看一个具体的例子?
#include <stdio.h>
int **in(int argc, char *argv[])
{
int i;
printf("The program receives %d parameters:\n", argc);
for(i=0; i<argc; i++)
{
printf("%s\n", argv);
}
return 0;
}
将生成后的程序放在D:\**目录下"命名为**in.exe"打开 cmd"命令提示符程序""输入D:\**\**in.exe C语言中文网 c.biancheng.net C-Lang"程序的运行结果如下"
从运行结果可以看出"包括程序名以及它后面的字符串都会被程序所接收。
去掉后面的数据"只输入程序名"
再次证明了程序名也会被传递给程序本身。
**in() 函数的第二种原型有非常实际的应用"在 Linux 中"每个 Shell 命令都需要一个程序来解释"如果这个程序是由C语言编写的"那么 **in() 函数就可以接收这个命令以及它后面附带的参数。
【实用程序】判断用户输入的是否是素数。
#include <stdio.h>
#include <**th.h>
#include <stdlib.h>
int isPrime(int n);
int **in(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);
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;
}
}
在 cmd 中的运行效果截图
转载:感谢您阅览,转载请注明文章出处“来源从小爱孤峰知识网:一个分享知识和生活随笔记录的知识小站”。
链接:**in()函数的高级用法:接收用户输入的数据http://www.gufeng7.com/niaolang/369.html
联系:如果侵犯了你的权益请来信告知我们删除。邮箱:119882116@qq.com
上一篇: 对C语言指针的总结