20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
1

Массив символов

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

Author24 — интернет-сервис помощи студентам
Здравствуйте, объясните пожалуйста, почему вот так:
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);
Да?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2013, 14:12
Ответы с готовыми решениями:

Матрица и одномерный массив (Составить одномерный массив, содержащий количество буквенных символов в каждом из ее столбцов, подсчет символов)
Помогите решить задачку: Дана матрица 5х7, элементами которой являются значения символьного типа....

Введите массив символов из 12 элементов. Удвоить все коды символов массива
Условие :Введите массив символов из 12 элементов. Удвоить все коды символов массива. Заранее...

Дан массив символов. Опеределить сколько в нем символов: *, ;, :
#include "stdafx.h" #include "math.h" #include "conio.h" #include "iostream" using...

С++ Дан массив символов, содержащий текст.Определить длину содержащейся в нем максимальной серии символов, отличных от б
Massiv C++ Добавлено через 3 минуты В конце вопроса б это - букв

9
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
15.05.2013, 14:19 2
Xantrax, потому что pack.Bytes[60] это символ. И то за пределами массива.

Добавлено через 2 минуты
Запивать значение в данном случае лучше через memcpy(), то вместо 4 я бы написал sizeof(DWORD), или sizeof(a). На всякий случай.
0
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 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";
присвоение
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
15.05.2013, 14:38 4
Цитата Сообщение от Xantrax Посмотреть сообщение
Да?
Почти. Привыкайте писать вот так (для переносимости)
C++
1
2
DWORD a = 80101850;   //шестнадцатеричное значение
memcpy(pack.Bytes, &a, sizeof a);  // Пускай размер переменной определится автоматический
2
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
15.05.2013, 14:52 5
go, первый раз вижу использование sizeof без скобок.
0
Croessmah
15.05.2013, 15:05
  #6

Не по теме:

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

0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
15.05.2013, 15:17 7
Croessmah, дело не в этом. Просто выражение может быть и без скобок записано, а вот тип - только со скобками.
0
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
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";
?
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
15.05.2013, 16:45 9
Цитата Сообщение от Tulosba Посмотреть сообщение
go, первый раз вижу использование sizeof без скобок.
Для определения размера переменной скобки можно опустить.

Добавлено через 1 минуту
C++
1
strcpy(pack.Bytes, "\x02\x00\x11\x11\x11\x11");
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
15.05.2013, 18:25 10
Цитата Сообщение от go Посмотреть сообщение
Для определения размера переменной скобки можно опустить.
не только переменной. Например:
C++
1
sizeof 1
0
15.05.2013, 18:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2013, 18:25
Помогаю со студенческими работами здесь

дано массив символов. Определить количество символов
Добрый день Мне нужна помощь на с++. бо бьюсь об неё уже не одну неделю. дело в следующим: дано...

Реализовать через массив символов. Ввести n слов с консоли. Найти слово, в котором число различных символов минимально
Ввести n слов с консоли. Найти слово, в котором число различных символов минимально. Если таких...

Дан массив а из 10 символов, массив b из 10 символов, и с = a+b
Дан массив а из 10 символов, массив b из 10 символов, и с = a+b. Нужно отсортировать любой...

Дан массив слов .Добавить в конец каждого слова по k символов ,совпадающим с первым символов слова
Дан массив слов .Добавить в конец каждого слова по k символов ,совпадающим с первым символом слова...

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

Массив: Создать массив для хранения различных символов...
Нужно создать массив для хранения различных символов (буквы и различные знаки) Необходимо узнать...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru