将 char 数组转换为 atoi 失败
Converting char array to atoi is failing
我查看了与此主题相关的其他帖子,并使用 atoi
函数转换字符串,但值始终为 0。
这是存储在 hold4
中的值:
char hold4[4] = { "0", "." , "1", "5", "[=10=]");
然后我尝试转换为 int
,然后我得到
int hm = atoi(hold4);
hm
打印为:
hm = 0
我预计 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] == '[=13=]' || 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] = '[=13=]';
// printf("new line: break\n");
}
//printf("pixel: %c\n", hold[x]);
}
int hm = atoi(hold4);
printf("\nhold4: %d\n", hm);
我该如何进行这项工作?
atoi
函数将 "array of chars" 转换为 "integer",因此得名:(a)rray (to) (i)nt.
您的字符数组有小数位,但atoi
只会转换0-9范围内的字符;它不会 return 浮点值。
请注意,您的变量 hm
明确是 int
类型,并且您使用 %d
打印值,也明确 int
。您已经完成了确保唯一的可能性是 int
值所需的一切。
你漏掉了整点整数。整数是一个整数(1、2、3、4...),不能有小数点。您要找的是 float/double.
char hold4[5] = { '0', '.' , '1', '5', '[=10=]'};
double a = atof(hold4);
printf("%f",a);
试试这个
我查看了与此主题相关的其他帖子,并使用 atoi
函数转换字符串,但值始终为 0。
这是存储在 hold4
中的值:
char hold4[4] = { "0", "." , "1", "5", "[=10=]");
然后我尝试转换为 int
,然后我得到
int hm = atoi(hold4);
hm
打印为:
hm = 0
我预计 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] == '[=13=]' || 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] = '[=13=]';
// printf("new line: break\n");
}
//printf("pixel: %c\n", hold[x]);
}
int hm = atoi(hold4);
printf("\nhold4: %d\n", hm);
我该如何进行这项工作?
atoi
函数将 "array of chars" 转换为 "integer",因此得名:(a)rray (to) (i)nt.
您的字符数组有小数位,但atoi
只会转换0-9范围内的字符;它不会 return 浮点值。
请注意,您的变量 hm
明确是 int
类型,并且您使用 %d
打印值,也明确 int
。您已经完成了确保唯一的可能性是 int
值所需的一切。
你漏掉了整点整数。整数是一个整数(1、2、3、4...),不能有小数点。您要找的是 float/double.
char hold4[5] = { '0', '.' , '1', '5', '[=10=]'};
double a = atof(hold4);
printf("%f",a);
试试这个