одно я понял точно: универ, где я учусь, параша: нас учили использовать в таких случаях fflish(stdin)
и у всех как ни странно работало
с какой операционной системы или что у вас за терминал
так ваш вариант с пробелом после спецификатора формата в scanf не работает должным образом
и да будет вам счастье с ожидаемым поведением, описанное стандартом и чем-угодно
fflush(stdin)
не работает и показал, что этому есть обоснование в мануале (кстати, в стандарте C99 вообще написано, что fflush для потока ввода -- UB). Не нужно из-за этого чувствовать себя уязвлённым, так работает этот сайт: люди указывают вам на ваши ошибки, а вы им -- на их. лучше, скорее всего, очистить буфер используя fflush(stdin), как я указал выше.
не совсем понятно зачем в scanf("%d ", &num) нужен пробел. scanf будет бесконечно ожидать ввода любого непробельного символа после ввода num.
getchar()
заменить на scanf("%*[^+-*:]%1[+-*:]", &op);
Это теперь конечно немного обесценивает мою интерпретацию порта E в двоичном коде.
мы же сдвинули это число на 8 разрядов влево, чтобы работать с битами от 8 по 15
HAL_GPIO_WritePin(..., led_state + 1, ...)
, led_state не увеличился бы на 1, со сдвигом всё то же самое. led_state = led_state >> 1 | led_state << 7; Сдвиг выполняется от изначального числа два раза, т.е. 00000001.00000000 и 1.10000000.00000000 и тд.
target_include_directories(test PRIVATE ${YOUR_DIRECTORY})
#include
.add_executable(main ${PROJECT_SRC})
file(GLOB PROJECT_SRC
"*.h"
"*.cpp"
)
*.h
в список исходников -- идея не очень. по-моему она возникает как раз не в cmd, а в консоли VS Code.
setlocale(LC_ALL, "")
мог бы помочь именно здесь.Как ни странно, именно en_US.utf8 с русским текстом на моей русской винде работает нормально...
utf8
имеет значение, и, поскольку она обозначает кодировку, способную представить весь unicode, она будет работать для любых символов. Проблемы будут у людей использующих кодовые страницы типа сp1251
. Насчёт второго - нет, на выходе после расшифровки нужны именно любые символы любых языков.
en_US.utf8
? setlocale(LC_ALL, "")
? Второй здесь: зачем там wchar_t, учитывая, что на выходе будут только символы из набора с64?
Савва Насыров, ты ошибаешься. Попробуй зашифровать своим алгоритмом буфер состоящий из одних нулей, а потом побайтово поксорь полученным результатом какой-нибудь зашифрованный тем же паролем текст.
Это имеет смысл, потому что шифруемые сообщения могут иметь структуру, а значит не всё их содержимое может контролироваться отправителем.