Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c中仅传递整数数据类型作为命令行参数_C - Fatal编程技术网

在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

我是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 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...
}