выводит больше чисел чем нужно
При выводе программа запрашивает количество символов, но на русском программа выводит значительно больше символов. На английском же всё правильно.
#include <locale.h>
#include <stdio.h>
int main(void){
setlocale(LC_ALL, "Rus");
system("chcp 1251");
char hello[] ="Hello world!";
char hellor[] = "Привет мир!";
printf("%s - %ld\n", hello, sizeof(hello));
printf("%s - %ld\n", hellor, sizeof(hellor));
return 0;
}
старался подключить библиотеку "locale" но что-то не вышло.
Ответы (1 шт):
Автор решения: Imas
→ Ссылка
Мои изменения в вашем коде:
setlocale
для установления локали наru_RU.UTF-8
для корректного отображения русских символовwchar_t
для строки на русском языкеwcslen
для подсчета количества символов в строке широких символовwprintf
для вывода строки широких символов.
#include <locale.h>
#include <stdio.h>
#include <wchar.h>
int main(void) {
setlocale(LC_ALL, "ru_RU.UTF-8");
char hello[] = "Hello world!";
wchar_t hellor[] = L"Привет мир!";
printf("%s - %ld\n", hello, sizeof(hello) - 1); // -1 для учета нуль-терминатора
wprintf(L"%ls - %ld\n", hellor, wcslen(hellor));
return 0;
}