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

C:带字符串的命令行参数,c,command-line-arguments,C,Command Line Arguments,我试图编写一个程序,将字符串作为命令行参数,然后通过一个函数(str_to_int)运行该参数,该函数将字符串作为输入。然而,当我试图编译程序时,我得到一个警告说 initializing 'char *' with an expression of type 'int' [-Wint conversion] char* str = atoi(argv[1]); ^ ~~~~~~~~~~~~~ 当我运行程序时,我得到一个分段错误 我已经对stru-to-int进行了很多测试

我试图编写一个程序,将字符串作为命令行参数,然后通过一个函数(str_to_int)运行该参数,该函数将字符串作为输入。然而,当我试图编译程序时,我得到一个警告说

initializing 'char *' with an expression of type 'int' [-Wint
conversion]
  char* str = atoi(argv[1]);
    ^     ~~~~~~~~~~~~~
当我运行程序时,我得到一个分段错误 我已经对stru-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;
}
#包括“hw3.h”
#包括
#包括
#包括
int main(int argc,char*argv[])
{
char*str=atoi(argv[1]);
printf(“%d\n”,str_to_int(str));
返回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;
}
#包括“hw3.h”
#包括
#包括
#包括
int main(int argc,char*argv[])
{
char*str=argv[1];
printf(“%d\n”,str_to_int(str));
返回0;
}

只需删除
atoi
函数调用,它应该可以工作

atoi
返回一个
int
。您的代码获取一个字符串(
argv[1]
),将其转换为
int
atoi()
),将结果放入一个字符串(
char*
),这会把事情搞砸,然后将其转换为
int
str\u to\u int()
)。这里的目标是什么?!remyabel和Biffen(以及编译器:-)是正确的。那么如何从命令行读取字符串呢?@dmeager101我认为如果您只需省略
atoi
,应该可以。第一个不一定会崩溃,取决于
str_to_int
以及是否接受空指针作为有效参数。
#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;
}