Насчёт второго - нет, на выходе после расшифровки нужны именно любые символы любых языков.
en_US.utf8
? setlocale(LC_ALL, "")
? Второй здесь: зачем там wchar_t, учитывая, что на выходе будут только символы из набора с64? значит все таки проблема в валгринде?
valgrind --tool=memcheck --leak-check=yes ./$(NAME)
valgrind --tool=memcheck --leak-check=yes ./$(NAME) || echo "valgrind error code: $$?"
куда тут вставить округление
Поэтому и прошу помощи
> для полноты картины стоит показывать полный лог выполнения команды make
>> не вижу смысла в этом
Полный лог высылать нет смысла, там нет никакой информации
да нет, дело не в шифровании:
int main(int argc, wchar_t* argv[]) ... printf("%s ", argv[i]);
%s
-- это не тот формат, который можно использовать для вывода строки wchar_t*
. Этот код частично работает потому что ты не работаешь с отдельными символами argv
, если бы ты стал это делать, ты бы сразу увидел, что что-то сильно не так. Попробуй в этой программе посимвольно напечатать аргументы. читал в одном источнике, что на Windows новых версий наоборот аргументы в cmd.exe передаются в Unicode
я реализовал чтение аргументов через функции WinAPI, заключив их в #ifdef. Насколько это индусский код, и что с ним будет на Linux?
в чём отличие преобразования (wchar_t*) в (char*) явным образом и вызова wcstombs?
после расшифровки строки с русскими буквами и её вывода на консоль получался мусор. Это так и должно быть, или где-то в моём коде есть баг, который к этому приводит?
Вопрос в том, что может я где-то усложнил себе жизнь?
Я говорил о том, что после прохода отладчиком в папке остаётся exe файл.
Например так. Да, ламерский подход
strcat
не меняет размер выделенной для строки памяти, это нужно делать самостоятельно перед её вызовом. видимо, то, что я вижу в режиме отладки - это работа некого интерпретатора, исполняющего мой код построчно, я прав?
у меня собирается
all:$(CPP_EXECUTABLE)
CPP_EXECUTABLE :=$(CPP_SOURCES:.cpp=)
CPP_SOURCES :=$(wildcard *.cpp)
*.cpp
, я очень хотел бы узнать, как оно у тебя собирается.itoa
, но это нестандартная функция, в стандартную библиотеку C она не входит.
Александр Попов, не имею опыта использования VS Code, но предположу, что либо есть настройка кодировки для этой консоли, либо
setlocale(LC_ALL, "")
мог бы помочь именно здесь.Это как раз не странно. Для перекодировки только часть
utf8
имеет значение, и, поскольку она обозначает кодировку, способную представить весь unicode, она будет работать для любых символов. Проблемы будут у людей использующих кодовые страницы типасp1251
.