在C中通过命令行传递整数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C中通过命令行传递整数?相关的知识,希望对你有一定的参考价值。
我想知道是否有人可以解释如何通过命令行传递参数?我真的很困惑它是如何工作的。现在我正试图将一个整数传递给主程序。我该怎么做呢?
编辑:继续获取初始化从指针生成整数而没有强制转换[-Wint-conversion]错误?
#include <stdio.h>
#define PI 3.1416
int
main (int argc, char *argv[])
{
double r,area, circ;
char a = argv[1];
int num = a - '0';
printf("You have entered %d",num);
r= num/2;
area = PI * r * r;
circ= 2 * PI * r;
printf ("A circle with a diameter of %d ", num);
printf ("has an area of %5.3lf cm2
", area);
printf ("and a circumference of %4.2lf cm.
", circ);
return (0);
}
答案
C中主函数的签名是这样的:
int main(int argc, char *argv[]);
argc是传递给程序的参数数量,包括程序名称。
argv是一个数组,包含每个参数作为字符串。
所以如果你这样调用你的程序:
./program 10
argc
将是2
argv[0]
将是字符串program
argv[1]
将是字符串10
您可以像这样修复代码:
#include <stdio.h>
#include <stdlib.h>
#define PI 3.1416
int
main (int argc, char *argv[])
{
double r,area, circ;
char *a = argv[1];
int num = atoi(a);
printf("You have entered %d",num);
r= num/2;
area = PI * r * r;
circ= 2 * PI * r;
printf ("A circle with a diameter of %d ", num);
printf ("has an area of %5.3lf cm2
", area);
printf ("and a circumference of %4.2lf cm.
", circ);
return (0);
}
您可能还希望在打印语句中添加换行符以提高可读性。
以上是关于在C中通过命令行传递整数?的主要内容,如果未能解决你的问题,请参考以下文章
在 C++11 中通过引用 std::thread 传递对象