Setlocate и char xx[30]; - Не компилирует - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Имеем код C:
#include <locale.h>;
#include <stdio.h>;
int main()
{
    setlocale(LC_ALL,"Russian");
    printf("Тест C\n");
    getchar();
    return 0;
}
Отлично компилируется, нет проблем. Русский работает в консоли. Но стоит добавить допусти

char name[40];

вот так:
#include <locale.h>;
#include <stdio.h>;
int main()
{
    setlocale(LC_ALL,"Russian");
    char name[40];
    printf("Тест C\n");
    getchar();
    return 0;
}
как компилятор(Visual Studio C++ 2010 express) отказывается работать:
1>------ Построение начато: проект: test, Конфигурация: Debug Win32 ------ 1> test.c 1>c:\users\mult\documents\visual studio 2010\projects\test.c\test\test.c(33): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline 1>c:\users\mult\documents\visual studio 2010\projects\test.c\test\test.c(34): warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline 1>c:\users\mult\documents\visual studio 2010\projects\test.c\test\test.c(38): error C2143: синтаксическая ошибка: отсутствие ";" перед "тип" ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Если закомментировать setlocate - работает. Так же и наоборот. Вместе - не хотят. Подскажите знающие люди, в чем могут быть грабли. Заранее спасибо.

Решение задачи: «Setlocate и char xx[30]; - Не компилирует»

textual
Листинг программы
#include <iostream>
#include <locale>
using namespace std;
int main()
{  
// установка русской локали для строкового потока и для вывода
    wcout.imbue(locale("rus_rus.866"));
    wcin.imbue(locale("rus_rus.866"));
 
    wchar_t mass[100]; 
    wcin.getline(mass,99);
 
    wcout << L"Вы ввели такую строку: "<< mass << endl;
 
   return 0;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы для работы с потоками ввода-вывода и локали.
  2. Устанавливается русская локаль для строкового потока wcout и для ввода wcin.
  3. Создается массив типа wchar_t с именем mass размером 100 символов.
  4. Вводится строка с помощью функции getline, которая записывает введенные символы в массив mass до тех пор, пока не встретит символ новой строки или не заполнит массив до 99 символов.
  5. Выводится сообщение с введенной строкой с помощью функции wcout.
  6. Программа завершается с кодом 0, что означает успешное выполнение.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5
Похожие ответы