在C语言中如何通过命令行传递一个整数?

16

我想知道有人能否解释一下如何通过命令行传递参数?我对它的工作原理感到非常困惑。现在,我正在尝试将一个整数传递到主程序中。我应该怎么做?

编辑:一直收到“初始化使整数指针从未使用过的转换产生警告[-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\n", area);
  printf ("and a circumference of %4.2lf cm.\n", circ);

  return (0);

}

你尝试过这个或者查阅/阅读有关C语言命令行参数处理的工作原理吗? - pvg
https://dev59.com/Z2855IYBdhLWcg3wuG-W - Tony Tuttle
有很多关于如何处理C程序中命令行参数的教程。你必须记住的重要事情是,argv数组是一个字符串数组。首先编写一个循环遍历参数并将它们打印出来(作为字符串)。一旦你做到这一点,就应该很容易理解了。 - Some programmer dude
相关:https://dev59.com/NWw05IYBdhLWcg3wy052请注意,这是一个链接,而不是一段文本。 - Ciro Santilli OurBigBook.com
1个回答

22

C语言中main函数的签名应该是这样的:

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\n", area);
  printf ("and a circumference of %4.2lf cm.\n", circ);

  return (0);

}

为了可读性,您可能还想在打印语句中添加换行符。


那么,为了使用字符串“10”,我需要将其转换为整数吗? - JVAN
@JVAN 要将其用作整数,是的。 - Jack Gore
1
@JVAN 是的。C main 函数的每个参数都是 C 风格的字符串。你需要自己进行整数转换或任何其他所需的处理。 - DUman
@JackGore 我已经更新了我的代码,试图将char转换为int。但是,我一直在收到错误提示。能帮忙吗? - JVAN

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接