Код должен посчитать сколько введен каждый символ в строке, строку сам задаешь
unsigned count[256];
memset(count, 0, sizeof(count));
// Считаем количество символов
for(int i=0; a[i] != '\0'; ++i) {
++count[a[i]];
}
// вывод
for(int i=0; i < 256; ++i) {
if(count[i] > 0)
printf(" %c=%d\n ", (char)i, count[i]);
}
Похоже, что служебные символы в переменных цикла (в отличие от таковых в аргументах командных файлов и переменных окружения) экранирования и не требуют
L"" + a
Может надо просто инициализировать a пустой строкой в начале? ...