将char数组转换为atoi失败了

use*_*460 -1 c arrays atoi

我已经检查过与此主题相关的其他帖子,并使用该atoi函数转换字符串,但值始终为0.

以下是存储在以下内容中的值hold4:

char hold4[4] = { "0", "." , "1", "5", "\0");
Run Code Online (Sandbox Code Playgroud)

然后我尝试转换为一个int,我得到

int hm = atoi(hold4);
Run Code Online (Sandbox Code Playgroud)

hm 打印出来:

hm = 0 
Run Code Online (Sandbox Code Playgroud)

我希望hm是0.15,因为这是值hold4.我想将此值用于后续的数学运算.

这是我的代码:

int x = 0;
int pixel = 0;  
char hold[10];
char hold4[4];  

for(x=0; x < linesCount; x++)
{
    fscanf(model, "%c", &hold[x]);
    if(hold[x] == '\0' || hold[x] == '\r' || hold[x] == '\n')
    {
        hold4[0] = hold[x-4]; 
        hold4[1] = hold[x-3]; 
        hold4[2] = hold[x-2]; 
        hold4[3] = hold[x-1];
        hold4[4] = '\0'; 
    //  printf("new line: break\n");
    }
    //printf("pixel: %c\n", hold[x]);
}

int hm = atoi(hold4);

printf("\nhold4: %d\n", hm);
Run Code Online (Sandbox Code Playgroud)

我该如何工作?

Mir*_*run 5

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

试试这个:atof()