将char数组转换为atoi失败了

时间:2016-05-30 21:13:42

标签: c arrays atoi

我已检查过与此主题相关的其他帖子,并使用(m <- matrix(1:50, nrow=5)) # [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] # [1,] 1 6 11 16 21 26 31 36 41 46 # [2,] 2 7 12 17 22 27 32 37 42 47 # [3,] 3 8 13 18 23 28 33 38 43 48 # [4,] 4 9 14 19 24 29 34 39 44 49 # [5,] 5 10 15 20 25 30 35 40 45 50 matrix(t(m), nrow=nrow(m))[, c(matrix(1:ncol(m), nrow(m), byrow=T)) ] # [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] # [1,] 1 2 3 4 5 26 27 28 29 30 # [2,] 6 7 8 9 10 31 32 33 34 35 # [3,] 11 12 13 14 15 36 37 38 39 40 # [4,] 16 17 18 19 20 41 42 43 44 45 # [5,] 21 22 23 24 25 46 47 48 49 50 函数转换字符串,但值始终为0.

以下是atoi中存储的值:

hold4

然后我尝试转换为char hold4[4] = { "0", "." , "1", "5", "\0"); 并获得

int

int hm = atoi(hold4); 打印出:

hm

我希望hm = 0 为0.15,因为它是hm中的值。我想将此值用于后续的数学运算。

这是我的代码:

hold4

我如何使这项工作?

3 个答案:

答案 0 :(得分:5)

你错过了整数的整点。整数是一个整数(1,2,3,4 ......),不能有小数点。您正在寻找的是漂浮/双重。

Try with this: atof()

答案 1 :(得分:2)

atoi函数转换一个&#34;字符数组&#34;到一个&#34;整数&#34;,因此得名:(a)rray(to)(i)nt。

您的字符数组有小数位,但atoi只会转换0-9范围内的字符;它不会返回浮点值。

请注意,您的变量hm明确属于int类型,并且您使用%d打印该值,同时明确int。您已经完成了所有必需的操作,以确保唯一的可能性是int值。

答案 2 :(得分:0)

char hold4[5] = { '0', '.' , '1', '5', '\0'};
double a = atof(hold4);
printf("%f",a);

试试这个