Ошибка ввода китайского SDL, вывод полностью отличается от ввода - PullRequest
0 голосов
/ 08 мая 2020

Я не являюсь носителем английского sh, поэтому мой английский sh может быть не таким точным. Если у вас есть вопросы, просто спросите меня. Вот вопрос. Я хочу ввести китайские иероглифы в свою программу, поэтому следую руководству по SDL (https://wiki.libsdl.org/Tutorials/TextInput?action=fullsearch&context=180&value=redraw&titlesearch=Titles). Чтобы проверить свою программу, я вывожу введенные символы. Однако они полностью отличаются от входных. Вот код

char text[100];   int done=0;
while (!done) {
    SDL_Event event;
    if (SDL_PollEvent(&event)) {
        switch (event.type) {
        case SDL_QUIT:
            done = SDL_TRUE;
            break;
        case SDL_TEXTINPUT:
            strcat(text, event.text.text);
            break;
        }
    }
}

В основном такой же, как и в руководстве, однако, когда я ввожу «你好», результат будет таким: снимок экрана

Можно кто-нибудь мне поможет? С уважением.

1 Ответ

1 голос
/ 08 мая 2020

strcat хочет, чтобы в качестве назначения была строка с завершением NUL:

назначение: Указатель на массив назначения, который должен содержать C строка , и быть достаточно большим, чтобы содержать объединенную результирующую строку.

Переключитесь на:

char text[100] = "";
...