int StrLength(char *str);
int HexToDouble(char *str);
int main()
{
char str[] = "134";
HexToDouble(str);
}
int HexToDouble(char *str)
{
int size = StrLength(str) * 4;
int *dblarr = new int[size];
for (int i = 4; i < size; (i + 4))
{
for (int j = 4; j > 0; j--)
{
dblarr[j] = (int)(*str) % 2;
}
str++;
}
for (int i = 0; i < size; i++)
{
cout << dblarr[i];
}
return 0;
}
int StrLength(char *str)
{
int count = 0;
while (*str)
{
str++;
count++;
}
return count - 1;
}
Если закрыть глаза на "особенности кода", то похоже Ваше проблема закралась здесь
for (int i = 4; i < size; (i + 4))
{
for (int j = 4; j > 0; j--)
{
dblarr[j] = (int)(*str) % 2;
}
str++;
}
здесь бесконечный цикл по i, (так как условие выполняется всегда, а i не увеличивается). Внутри цикла увеличивается позиция str и в конце концов оно будет показывать за пределами массива и будет показывать на память "не процесса". Конструкция dblarr[j] = (int)(*str) % 2; - вообще чудесна:)
Как исправить? а кто его знает - логика всей программы мне мало понятна.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей