【发布时间】:2016-05-30 21:13:41
【问题描述】:
我查看了与该主题相关的其他帖子,并使用atoi函数转换字符串,但值始终为0。
这是存储在hold4中的值:
char hold4[4] = { "0", "." , "1", "5", "\0");
然后我尝试转换为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] == '\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);
我该如何进行这项工作?
【问题讨论】:
-
您没有注意到您将 5 个值放入一个声明为仅包含 4 个的数组中吗?
-
您的代码应该生成大量编译器警告,以便将指针转换为
char。您尝试使用初始化程序将char *存储到您的char中!编译器警告/错误不仅仅是为了好玩!