Нужно в строке UNICODE написать все символы в обратном порядке. Очень маленький опыт работы с UNICODE по-этому не понимаю что нужно исправить
#include "stdafx.h"
#include <fcntl.h>
#include <io.h>
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include "stdafx.h"
int main()
{
wchar_t string[] = L"\x0124\x0117\x0177 \x263A\n";
int lenght = size_t wcslen (string);
int temp, i, j;
for (i = 0; j = lenght - 1; i < j; i++; j--)
{
temp = string[i];
string[i] = string[j];
string[j] = temp;
}
wprintf(string);
system("pause");
return 0;
}
Работа с UNICODE ничем не отличается от работы с ANSI символами. Отличия минимальны:
char используется wchar_t (под Windows можно WCHAR), "..." используются UNICODE строки L"...",wcslen вместо strlen.Это все, что нужно сделать, чтобы преобразовать программу для работы с юникодными строками.
Что касается конкретно вашей программы, то вы напрасно не обращаете внимания на то, что пишет вам компилятор. Синтаксические ошибки это самое простое, достаточно всего лишь прочитать сообщения компилятора. Например:
int lenght = size_t wcslen (string);
ошибка, size_t тут непонятно к чему. Если вы хотели преобразовать результат wcslen к типу lenght, то надо было написать так:
int lenght = (int)wcslen (string);
Дальше:
for (i = 0; j = lenght - 1; i < j; i++; j--)
Цикл for должен содержать три выражения, разделенных точками с запятой. У вас их пять. Вероятно, вы хотели написать так:
for (i = 0, j = lenght - 1; i < j; i++, j--)
Для вас запятая может мало отличаться от точки с запятой, но для компилятора это совершенно разные вещи. Он не пытается догадаться что вы имели в виду, просто отмечает это как ошибку.
Остальное вроде правильно.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей