Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
2 / 2 / 2
Регистрация: 18.07.2022
Сообщений: 16

Заполнение массива char в одну строку

28.07.2022, 13:16. Показов 2641. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Обьявлен массив:

unsigned char Data[4128];

Как можно заполнить несколько первых ячеек этого массива?

Сейчас делаю это так:

Data[0] = 0x18;
Data[1] = 0xDA;
Data[2] = 0x27;
Data[3] = 0xF0;
Data[4] = 0x02;
Data[5] = 0x10;
Data[6] = 0x01;
Data[7] = 0xFF;
Data[8] = 0xFF;
Data[9] = 0xFF;
Data[10] = 0xFF;
Data[11] = 0xFF;

Есть ли более постой способ?
Например:

Data = {0x18, 0xDA, 0x27, 0xF0, 0x02, 0x10, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.07.2022, 13:16
Ответы с готовыми решениями:

Перевод Char[] в одну строку
ДОбрый день, подскажите пожалуйста, как можно char *a перевести в одну String? спасибо

Сложение двух динамических массивов char* в одну строку
В массивы вводятся данные, масcивы вида : int n,k; char *a,*b; a=new char; b=new char; Как вывести результирующую...

Как присоединить одну строку к другой типа const char *
Создаю группу файло, передаю путь. Нужно соединить строки. const char *path="C:\\Program Files\\Microsoft Visual...

6
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
28.07.2022, 14:11
stalkerwd, Так размер массива будет равен кол-ву заполненных элементов.
C++
1
unsigned char Data[] = {0x18, 0xDA, 0x27, 0xF0, 0x02, 0x10, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
А так размер указан явно, но заполнены только первые элементы.
C++
1
unsigned char Data[4128] = {0x18, 0xDA, 0x27, 0xF0, 0x02, 0x10, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,236
28.07.2022, 14:14
C++
1
unsigned char Data[4128] = {0x18, 0xDA, 0x27, 0xF0, 0x02, 0x10, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
Остальные элементы будут заполнены нулями.

Добавлено через 1 минуту
anton78spb, размер массива надо указать, т.к. по условию нужно заполнить только часть массива.
0
2 / 2 / 2
Регистрация: 18.07.2022
Сообщений: 16
30.07.2022, 23:16  [ТС]
Спасибо за ответы, но массив уже объявлен в программе. Он уже является частью структуры и является "буфером" данных при вызове внешней функции. Его содержимое нужно несколько раз менять, для отправки данных в функцию.


C++
1
2
3
4
5
6
7
8
9
10
11
typedef struct {
       unsigned long ProtocolID;
       unsigned long RxStatus;
       unsigned long TxFlags;
       unsigned long Timestamp;
       unsigned long DataSize;
       unsigned long ExtraDataIndex;
       unsigned char Data[4128];
} PASSTHRU_MSG;
 
PASSTHRU_MSG msg;
Поэтому я и спросил, как заполнить уже объявленный массив. Я пробовал сделать так:

C++
1
2
unsigned char Dat1[4128] = {0x18, 0xDA, 0x27, 0xF0, 0x02, 0x10, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
msg.Data = Dat1;
... но получаю в компиляторе ошибку E2277 Lvalue required
0
 Аватар для programmer_08
687 / 444 / 209
Регистрация: 18.10.2020
Сообщений: 1,606
30.07.2022, 23:18
C++
1
strcpy_s(msg.Data, 4128, Dat1);
но всё равно это плохо
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12922 / 6789 / 1818
Регистрация: 18.10.2014
Сообщений: 17,176
31.07.2022, 07:16
Цитата Сообщение от stalkerwd Посмотреть сообщение
Как можно заполнить несколько первых ячеек этого массива?
Заполнить когда? В момент объявления? Или где-то позже?

Цитата Сообщение от stalkerwd Посмотреть сообщение
Поэтому я и спросил, как заполнить уже объявленный массив. Я пробовал сделать так:
То есть позже. Тогда, например, так

C++
1
2
using CA = unsigned char[];
std::copy_n(CA{ 1, 2, 3, 4, 5 }, 5, msg.Data);
или

C++
1
std::copy_n(std::initializer_list<unsigned char>{ 1, 2, 3, 4, 5 }.begin(), 5, msg.Data);
Немного кривовато, из-за избыточного указания размера, но и это поправимо.
1
736 / 700 / 110
Регистрация: 29.05.2015
Сообщений: 4,266
31.07.2022, 08:20
Лучший ответ Сообщение было отмечено zss как решение

Решение

Если массив уже объявлен, то какие проблемы?

C
1
2
3
4
5
6
7
8
9
10
11
unsigned char buf[12] = {0x18, 0xDA, 0x27, 0xF0, 0x02, 0x10, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
 
for(int i = 0; i < 12; i++)
{
    msg.Data[i] = buf[i];
}
 
for(int i = 12; i < 4128; i++)
{
    msg.Data[i] = 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.07.2022, 08:20
Помогаю со студенческими работами здесь

Заполнение массива char
Подскажите пожалуйста почему массив char по умолчанию всегда заполняется буквами 'a'? import java.util.Scanner; class A{ public...

Заполнение массива char с клавиатуры
Есть код: package com.company; import java.util.Scanner; public class Main { public static void main(String args) { ...

Сложение массива типа char в одну переменную
Здравствуйте, уважаемые форумчани, помогите разобраться с такой простой задачей. Есть массив char Arr={'1','a','3','b','5','c'}....

Некорректное заполнение char массива кириллицей
Когда заполняю char массив кириллицей и вывожу его, то вместо символов выводятся знаки вопросов. Сначала думал что проблема в кодировке...

Заполнение массива char и вывод его
Здравствуйте. Написать 2 кода - основная программа и модуль: заполнение одномерного массива char символами ,которые вводит пользователь с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru