在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 中通过引用传递字符串

在C中通过字符串运行命令

在 C++11 中通过引用 std::thread 传递对象

如何在 Turbo C/C++ 中通过引用传递字符串

如何在Windows中通过Cygwin来使用Linux命令行

如何在python中通过命令行给出元组