Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Конвентирование типов переменных...
Форум программистов > Системное программирование > C, С++ и С Builder > C и С++ FAQ
enclave
Как присвоить значение переменной типа int символьному массиву?

char array[64]; int x = 1001;

array[] = x? // Вот здесь!

Можно ли вообще как-то конвентировать типы переменных?
Mustang
если тебе число нужно представить строкой, то приведение типов тут не причём!

char array[64];
int x = 1001;

sprintf(array, "%d",  x);


а конвертировать можно повсякому! смотря что и куда тебе нужно. wink.gif
Guest
А какой заголовочный файл нужен для sprintf()?
Mustang
стандартный сишный "stdio.h"!
logosman
2enclave:
Чтобы записать int в массив char, то без ассма не обойтись!

// Пример для VC++
void main(void)
{
char array[64];
int x = 1001;
int index, ofs;

index = 3;
ofs = (int)&array[index];

// array[] = x:
_asm{
mov esi, [ofs]
mov eax, [x]
mov [esi], eax
}
}

Здесь по смещению в памяти array+index учитывая '0' будет записан X.

Для TC/BC немного сложнее, смотря для какого случая:
- либо переменная в сегменте кода DS=CS
- либо DS!=CS

в этих 2 случаях будет применяться разная оптимизация и разный подход.
LAW
Цитата(enclave @ 19:05:2004, 15:26 ) *
Как присвоить значение переменной типа int символьному массиву?

char array[64]; int x = 1001;

array[] = x? // Вот здесь!

Можно ли вообще как-то конвентировать типы переменных?


Всё очень просто:
array=IntToStr(x)
или
array=IntToStr(x).c_str();
точно не помню.
А назад x=StrToInt(array);

Удачи
62316e
    char array[4];
    int x = 1001;
    *reinterpret_cast<int*>(array) = x;
Creo
Тут не все так просто. Если int 2 байта, то он поместиться в два char(a). Если 4 то соответственно в 4. Иначе придется оставлять только младшие разряды. И есть ли вообще смысл таким заниматься?
Попробуй так:
union {
char mas[2];
int i;
} a;


Присвой переменной какое нить значение, а потом обращайся к нему как к массиву. Тогда a.mas[0] младшая часть инт, a.mas[1] -- старшая(или наоборот dry.gif smile.gif ).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.