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

Как пользоваться указателями строк? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывести полуокружности, повторяя по два раза с каждой стороны до конца цикла (графическое задание) http://www.cyberforum.ru/cpp-beginners/thread1633112.html
Доброй ночи, ребят следующий код выводит полуокружности на левой стороне, в задании нужно чтобы они полуокружности чередовались по два раза. Сначала нужно чтобы вывелось два полукруга на левой стороне а потом нужно чтобы два полукруга вывелось на правой стороне. И так далее до конца цикла. #include <iostream> #include <cmath> #include <iomanip> using namespace std; int main() { double x,...
C++ Builder При втором запуске программы файлы не загружаются в программу Здравствуйте. задача вот такая И нформация об участниках спортивных соревнований содержит: наименование страны, название команды, Ф.И.О. игрока, игровой номер, возраст, рост, вес. Вывести информацию о самой молодой команде. Если заполнить таблицу сохранить информацию в файл отсортировать его и сохранить результат то потом можно открыть исходный файл таблицы участников, а если просто... http://www.cyberforum.ru/cpp-beginners/thread1633103.html
Задача: Манхэттенский полицейский C++
Добрый день, уже несколько дней с друзьями пытаемся решить задачу, которая явно использует какой-то простой алгоритм. Буду рад любым вашим намекам или соображениям: Задача: Недавно Билл устроился на работу полицейским. Теперь ему предстоит каждый вечер обходить свой участок, который представляет собой прямоугольник, состоящий из N x M кварталов. Каждый квартал имеет вид квадрата размером...
C++ Найти значения на выходе
Здравствуйте! Помогите найти значения на выходе. void F(int n, char a, char b, char c) { if (n>0) { F(n-1,b,c,a); printf("%d %c %c %c", n, a, b, c); } }
C++ Найти числа Фибоначчи, которые предшествуют введенному числу http://www.cyberforum.ru/cpp-beginners/thread1633081.html
Найти числа Фибоначчи, которые предшествуют введенному числу
C++ Найти эквивалентное значение Здравствуйте! Подскажите эквивалентен значение к a 1) **(a) 2) *(a+I) 3) *(&(a+I)) 4) *(&(a)) 5) ни один из вариантов подробнее

Показать сообщение отдельно
артист
 Аватар для артист
0 / 2 / 3
Регистрация: 17.09.2014
Сообщений: 561
Завершенные тесты: 1
07.01.2016, 02:01  [ТС]     Как пользоваться указателями строк?
Цитата Сообщение от castaway Посмотреть сообщение
Указатель.
А чем он отличается от BYTE bDataOut; ?

Я уже гуглил, везде указатель, указатель, а что он делает и зачем он, не пишут...

Вот так, я понимаю создастся 1 элемент:
C++
1
BYTE bDataOut;
А так, сколько?:
C++
1
BYTE * bDataOut;
Цитата Сообщение от castaway Посмотреть сообщение
Понятным языком объяснить проблему.
Мне нужно считать текст из окна EDIT, зашифровать его в AES и вывести текстом как hex в другое окно.

Пока что вот такое г получилось:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
BYTE bDataBlocks[crypto.block_size] = {0};      // Буффер для шифрования, 16 ячеек
 
WCHAR * wTextIn = new WCHAR[eLen[0]];           // Массив под текст(ввод)
GetWindowTextW(hEdit[1], wTextIn, eLen[0] + 1); // Получить текст из поля(без нуль терминатора)
 
BYTE * bDataIn = new BYTE[eLen[0] * 2];                                     // Массив под данные(ввод), в него копируется весь текст
std::copy(wTextIn, wTextIn + eLen[0], reinterpret_cast<WCHAR *>(bDataIn));  // Копировать двух байтовую строку в массив байт
 
BYTE * bDataOut = new BYTE[eLen[0] - ((eLen[0] % 16) - 16) * 2 + 16];       // Массив под данные(вывод), в него копируются шифрованные данные
 
unsigned long long llDataLenght = eLen[0];      // Длина всего текста
 
for(int i = 0; i < 8; ++i) bDataBlocks[i] = llDataLenght >> (i * 8); // Записать длину текста в буфер побайтово
 
(crypto.*whats_to_do)(bDataBlocks, bDataBlocks);    // Шифровать 1й блок
 
unsigned chunk = -1;    // Счётчик. потом + 16 - для записи потому, что записан 1й блок
 
while(++chunk < 16) bDataOut[chunk] = bDataBlocks[chunk];   // Копировать 1й блок
//memcpy(wTextOut, bDataBlocks, 16 * sizeof(BYTE)); // Записать 1й блок
 
while(chunk < eLen[0]) // Цикл, пока не кончатся данные
{
    for(int j = 0, i = (chunk - 16); i < chunk; ++i)    // Копировать данные по 16 байт в буффер
    {
        if(i < eLen[0]) // Если данные не кончились
        {
            bDataBlocks[i] = bDataIn[i];    // Копировать данные
            j++;                            // Считать скопированные данные
        }
        else if(j < 15) // Если данные кончились, а буффер заполнен не до конца
        {
            while(j < 16)   // Дополнить буффер до конца
            {
                bDataBlocks[j] = 0; // Копировать ноль
                j++;                // Считать скопированные данные
            }
            break;  // Разрушить цикл копирования в буффер
        }
        else break; // Если данные закончились и буффер полностью забит, разрушить цикл копирования в буффер
    }
    (crypto.*whats_to_do)(bDataBlocks, bDataBlocks);    // Шифровать блок
    
    for(int i = chunk; i < (chunk += 16); ++i) bDataOut[chunk] = bDataBlocks[chunk];    // Копировать зашифрованный блок в массив вывода
}
Может это всё можно сделать через sdl?

Цитата Сообщение от castaway Посмотреть сообщение
Если я не ошибаюсь, то округлить вверх можно так: i = (i + 15) / 16 * 16;
Ну тут особо разницы нет, у меня даже поменьше операций(тут ещё умножить на 2 и прибавить 16 нужно добавить будет)...
 
Текущее время: 23:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru