Как правильно записать не-ascii из stdin в файл - PullRequest
0 голосов
/ 29 октября 2018
#include <stdio.h>
#include <windows.h>


int main(int argc, char** argv)
{
    DWORD bytes_read;
    char buffer[65536];
    LPSTR str;

    ReadFile(GetStdHandle(STD_INPUT_HANDLE), buffer, 65536, &bytes_read, NULL);
    str = malloc(bytes_read);
    memcpy(str, buffer, bytes_read);

    FILE *f = fopen("file.txt", "w");
    fprintf(f, "stdin: %s", str);
    fprintf(f, "hardcoded: %s\n", "á");
    fclose(f);

    return 0;
}

при запуске в powershell через echo á|.\Program.exe содержимое файла file.txt:

stdin: ? ýýýýhardcoded: á

Меня интересует замена знака вопроса на соответствующий символ, полученный из стандартного ввода

1 Ответ

0 голосов
/ 24 декабря 2018

Stdin, очевидно, использует кодировку CP437.Перезагрузка файла с этой кодировкой показывает правильный символ

...