Я проверил другие сообщения, связанные с этой темой и использовали функцию atoi
, чтобы преобразовать строку, но значение всегда равно 0.Преобразование массив символов в atoi не удается
Здесь значения хранятся в 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' с инициализатором! Предупреждения/ошибки компилятора не просто для удовольствия! – Olaf