| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Дописать число в конец массива |
| Автор: Sooto 26.6.2005, 11:28 |
| Здравствуйте! Столкнулся с такой проблемой... Существует массив char шестнадцатеричных чисел. Необходимо вычислить его контрольную сумму и дописать в конец массива. Сумму посчитал - не могу сообразить, как дописать к массиву... Перерыл/перепробовал кучу всего - не получается! Кажется, что решение простое, а кручусь вокруг, да около, не могу наткнуться :-) -------------------------------------------------- char dss[] = {0x0A,0x00,0x01}; int dssLen=sizeof(dss)/sizeof(char); WORD crc = 0; for(int i=0;i<dssLen;++i,crc+=dss[i]); -------------------------------------------------- Посоветуйте, будьте добры? Спасибо... |
| Автор: Mayk 26.6.2005, 11:54 | ||||
Без заведения нового массива никак.
А если массив dss был динамическим(созданным через malloc/calloc, но НЕ через new/alloca), то можно так:
|
| Автор: codelord 26.6.2005, 12:54 | ||
| У меня твоя такая конфикурация не заработала: for(int i=0;i<dssLen;++i,crc+=dss[i]); Без создания нового массива я тоже обойтись не смог, т.е почти массива. в переделанном коде ниже (уверен что не самом красивом) в указателе u, твой массив с дописаным crc.
хотя можно попробовать вернуть значение u твоему dss; |
| Автор: Mayk 26.6.2005, 13:14 | ||
В исходной строке встречается ноль - завершающий символ строки. Поэтому AnsiString(dss).c_str() = {0x0A, 0x00}, а не {0x0A, 0x00, 0x01}. |
| Автор: Sooto 26.6.2005, 13:18 |
| Mayk Собственно, я так и пробовал - через новый массив: (с учётом Вашего совета) ----------------------------------------------- char dss[] = {0x76,0x0A,0x00,0x00}; int dssLen=sizeof(dss)/sizeof(char); WORD crc = 0; for(int i=0;i<dssLen;++i,crc+=dss[i]); char dts[50]; memcpy(dts,dss,dssLen); *((int*)&dts[dssLen])=crc; ----------------------------------------------- К сожалению, не получилось В массив дописываются значения, но не то.. В дебаггере посмотрел номера символов - отрицательные. codelord Ваш пример совсем не работает... Работаю в Visual C 6.0? |
| Автор: NiJazz 26.6.2005, 13:32 | ||
Пример программы:
|
| Автор: Guest 26.6.2005, 14:13 |
| Спасибо откликнувшимся! Вопрос закрыт :-) |