在c中仅传递整数数据类型作为命令行参数
我是C编程新手。我一直在练习使用C语言中的命令行参数。我编写了一个C代码来计算圆的面积和周长。这是我的代码:在c中仅传递整数数据类型作为命令行参数,c,C,我是C编程新手。我一直在练习使用C语言中的命令行参数。我编写了一个C代码来计算圆的面积和周长。这是我的代码: #include<math.h> #include<stdio.h> #include<stdlib.h> float circle(float pi,int r) { float cir; cir=(pi*r*r); printf("area of the circle is: %f \n",cir); } float ci
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
float circle(float pi,int r)
{
float cir;
cir=(pi*r*r);
printf("area of the circle is: %f \n",cir);
}
float circumference(float pi,int r)
{
float circum;
circum=(2*pi*r);
printf("the circumference is: %f \n",circum);
}
int main(int argc,char *argv[])
{ int r,r1;
float pi;
r=0;
pi=M_PI;
if(argc>3 || argc<3)
{
printf("error \n");
exit(0);
}
r=atoi(argv[1]);
r1=atoi(argv[2]);
circle(pi,r);
circumference(pi,r1);
}
#包括
#包括
#包括
浮点数圆(浮点数pi,整数r)
{
浮点数;
cir=(pi*r*r);
printf(“圆的面积是:%f\n”,cir);
}
浮动周长(浮动圆周率,整数r)
{
浮动环;
环=(2*pi*r);
printf(“周长为:%f\n”,周长);
}
int main(int argc,char*argv[])
{int r,r1;
浮点数;
r=0;
pi=M_-pi;
如果(argc>3 | | argc不幸,atoi
在解析失败时返回0
,尽管0也可能是有效的输入
在C中,我看到了克服这一问题的两种选择:
(1) 使用sscanf
并查看是否可以解析一个数字:
if (sscanf(argv[1],"%d",&r) != 1) {
// some error handling here...
}
(2) 检查是否至少第一个字符是数字(然后生成有效数字):
<>但请注意,您可能需要考虑<代码> ->代码>或<代码> +>代码>以及空白。
因此,我实际上更喜欢选项1。一种可能是使用isdigit
。感谢您的回复。我如何才能将isdigit用于多参数@1201programalmthank。非常感谢。这两种情况都将接受字符串“3mice”
作为值3
。对于您的目的来说,这可能不够好,也可能不够好。感谢您的回复,这让我想到了一个新的测试用例@HAL9000@HAL9000这可以通过检查sscanf(argv[1]、%d%c]、&r和&c)来实现==1
其中char c;
将是另一个变量,用于捕获数字后面的任何不需要的字符。
if (!isdigit(argv[1][0]) {
// some error handling here...
}