Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Xantrax
17 / 17 / 1
Регистрация: 28.11.2012
Сообщений: 328
#1

Массив символов - C++

15.05.2013, 14:12. Просмотров 1522. Ответов 9
Метки нет (Все метки)

Здравствуйте, объясните пожалуйста, почему вот так:
C++
1
char data[7] = "\x02\x00\x11\x11\x11\x11";
не выдает ошибку, а вот так:
C++
1
2
3
4
5
6
7
8
struct PACKET
{
  int len;  // длина
   char Bytes[60];
};
 
PACKET pack;
pack.Bytes[60] = "\x02\x00\x11\x11\x11\x11";
выдает ошибку cannot convert from 'const char [7]' to 'char'

Как записать все-таки все это в массив pack.Bytes[60]?
И еще, я так понимаю, что заменить значения в массиве pack.Bytes[60] - можно с помощью
C++
1
2
DWORD a = 80101850;   //шестнадцатеричное значение
memcpy(pack.Bytes,&a,4);
Да?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2013, 14:12     Массив символов
Посмотрите здесь:

Дан массив символов. Опеределить сколько в нем символов: *, ;, : - C++
#include "stdafx.h" #include "math.h" #include "conio.h" #include "iostream" using namespace std; int main() { ...

Дан массив а из 10 символов, массив b из 10 символов, и с = a+b - C++
Дан массив а из 10 символов, массив b из 10 символов, и с = a+b. Нужно отсортировать любой сортировкой, например: Сортировка слиянием или...

Дан массив слов .Добавить в конец каждого слова по k символов ,совпадающим с первым символов слова - C++
Дан массив слов .Добавить в конец каждого слова по k символов ,совпадающим с первым символом слова . Удалить из всех слов цифры ....

Задан массив из k символов. Преобразовать массив следующим образом: расположить символы в обратном порядке - C++
Задан массив из k символов. Преобразовать массив следующим образом: расположить символы в обратном порядке. Только начали изучать С++,...

Класс "Телефонная станция". Массив символов и массив строк - в чем разница? - C++
Всем привет. Не могу исправить в программе пункт корректировки. Весь проект прикрепляю к сообщению. ...

Массив из символов - C++
Здравствуйте! Помогите пожалуйста разобраться как сделать массив из символов и вывести на экран. Массив 3 на 3 может выглядеть примерно...

массив символов - C++
необходимо ввести массив символов. как это сделать, потому что моя функция не работает почему-то. void massin(char a,int n) {...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
15.05.2013, 14:19     Массив символов #2
Xantrax, потому что pack.Bytes[60] это символ. И то за пределами массива.

Добавлено через 2 минуты
Запивать значение в данном случае лучше через memcpy(), то вместо 4 я бы написал sizeof(DWORD), или sizeof(a). На всякий случай.
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
15.05.2013, 14:26     Массив символов #3
Цитата Сообщение от Xantrax Посмотреть сообщение
не выдает ошибку, а вот так:
потому что это
C++
1
char data[7] = "\x02\x00\x11\x11\x11\x11";
инициализация, а это:
C++
1
pack.Bytes[60] = "\x02\x00\x11\x11\x11\x11";
присвоение
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
15.05.2013, 14:38     Массив символов #4
Цитата Сообщение от Xantrax Посмотреть сообщение
Да?
Почти. Привыкайте писать вот так (для переносимости)
C++
1
2
DWORD a = 80101850;   //шестнадцатеричное значение
memcpy(pack.Bytes, &a, sizeof a);  // Пускай размер переменной определится автоматический
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
15.05.2013, 14:52     Массив символов #5
go, первый раз вижу использование sizeof без скобок.
Croessmah
15.05.2013, 15:05
  #6

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
go, первый раз вижу использование sizeof без скобок.
sizeof - это унарный оператор, а не функция

Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
15.05.2013, 15:17     Массив символов #7
Croessmah, дело не в этом. Просто выражение может быть и без скобок записано, а вот тип - только со скобками.
Xantrax
17 / 17 / 1
Регистрация: 28.11.2012
Сообщений: 328
15.05.2013, 16:29  [ТС]     Массив символов #8
Так как же все-таки правильно написать-то
C++
1
2
3
4
5
6
7
8
struct PACKET
{
  int len;  // длина
   char Bytes[60];
};
 
PACKET pack;
pack.Bytes[60] = "\x02\x00\x11\x11\x11\x11";
?
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
15.05.2013, 16:45     Массив символов #9
Цитата Сообщение от Tulosba Посмотреть сообщение
go, первый раз вижу использование sizeof без скобок.
Для определения размера переменной скобки можно опустить.

Добавлено через 1 минуту
C++
1
strcpy(pack.Bytes, "\x02\x00\x11\x11\x11\x11");
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2013, 18:25     Массив символов
Еще ссылки по теме:

массив символов - C++
решил вот сделать сохраненку для игры. имеется во такой код на данный момент printf("\n\n"); system("echo минимальное количество...

массив символов - C++
Помогите решить задачу Сохранить текст в массиве и выполнить следующие алгоритмы: удалить из текста все слова с нечетными порядковыми...

массив символов s1 и s2 - C++
Используя массивы символов s1 и s2: a) Скопируйте строку, хранимую в массиве s1, в массив s2. b) Сравните строку s1 со строкой s2. ...

Массив из символов - C++
Здравствуйте. Программа, по задумке, должна выводить массив из символов, а вместо этого выводит лишь цифру 9. Помогите разобраться чём...

Двумерный массив символов - C++
привожу кусок кода: int N(0); int M(0); cout << "Введите кол-во строк, в которых мы будем искать первую строку" << endl; cin...


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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
15.05.2013, 18:25     Массив символов #10
Цитата Сообщение от go Посмотреть сообщение
Для определения размера переменной скобки можно опустить.
не только переменной. Например:
C++
1
sizeof 1
Yandex
Объявления
15.05.2013, 18:25     Массив символов
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru