【发布时间】:2015-01-27 04:32:45
【问题描述】:
我正在尝试编写一个程序,该程序将字符串作为命令行参数,然后通过将字符串作为输入的函数 (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;
}
谁能告诉我我做错了什么?谢谢。
【问题讨论】:
-
atoi返回一个int。 -
您的代码接受一个字符串 (
argv[1]),将其转换为int(atoi()),将结果放入字符串 (char*),这会搞砸,然后将其转换为int(str_to_int())。这里的目标是什么?! -
remyabel 和 Biffen(以及编译器 :-))是对的。
-
那么如何从命令行读取字符串?
-
@dmeagher101 我认为如果你忽略
atoi应该没问题。