C:带字符串的命令行参数

时间:2015-01-26 19:36:21

标签: c command-line-arguments

我试图编写一个程序,它接受一个字符串作为命令行参数,然后通过一个以字符串作为输入的函数(str_to_int)运行所述参数。但是,当我尝试编译程序时,我收到一条警告

initializing 'char *' with an expression of type 'int' [-Wint
conversion]
  char* str = atoi(argv[1]);
    ^     ~~~~~~~~~~~~~

当我运行程序时,我遇到了分段错误 我已经对str_to_int进行了很多测试,所以我非常确定问题在于命令行程序。这是代码。

#include "hw3.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char *argv[])
{
  char* str = atoi(argv[1]);
  printf("%d\n", str_to_int(str));
  return 0;
}

谁能告诉我自己做错了什么?感谢。

3 个答案:

答案 0 :(得分:0)

这就是你所需要的,但如果省略命令行参数,它会崩溃。

{
    printf("%d\n", str_to_int(argv[1]));
    return 0;
}

这更强大:

int main(int argc, char *argv[])
{
    if (argc == 1)
        printf("missing parameter.");
    else
        printf("%d\n", str_to_int(argv[1]));

    return 0;
}

答案 1 :(得分:0)

#include "hw3.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char *argv[])
{
  char* str = argv[1];
  printf("%d\n", str_to_int(str));
  return 0;
}

答案 2 :(得分:0)

只需删除atoi函数调用,它就可以正常工作