C:带字符串的命令行参数
我试图编写一个程序,将字符串作为命令行参数,然后通过一个函数(str_to_int)运行该参数,该函数将字符串作为输入。然而,当我试图编译程序时,我得到一个警告说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进行了很多测试
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;
}