daniilgorbenko
@daniilgorbenko
Программист, AI & BigData

Как копировать один символ строки в другую переменную?

Не могу понять, как правильно взять один символ строки и вывести его в файл. При условии, что в строке записан текст на русском языке. Мне надо получить что-то вроде этого:
char *symb = "привет";
char *symb_cp; 
// symb_cp = get_symbol(symb, 2) => symb_cp == "и";
// symb_cp = get_symbol(symb, 4) => symb_cp == "е";


Для английской строки работает такой код:
symb = "hello";
    char *symb2 = malloc(sizeof(char)*2);
    strncpy(symb2, symb, 1);
    symb2[1] = '\0';
    fputs("->", fp);
    fputs(symb2, fp);
    fputs("<-", fp);
// в файле: ->h<-

Для русской строки такая же операция не работает, так как в файл помещаются непонятные символы.
Как быть в такой ситуации с русским языком?
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
@res2001
Developer, ex-admin
Для кода нет никакой разницы английский символ в строке, русский или китайский.
Но когда вы читаете текстовый файл глазами, чтобы символы правильно отображались вы должны выбрать правильную кодировку. Си никак не меняет кодировку символов, то что есть в строке то и пишется в файл.

Вообще у вас как-то усложнена запись в файл. Зачем вы копируете этот единственный символ, да еще и выделяете для этих 2ух байт динамическую память (которую надо еще и освободить после использования).
Си строка - это просто массив байт. С ним можно обращаться как с массивом (symb[i]). Для записи в файл одного символа используйте fputc(), для записи нескольких байт используйте fwrite().
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
03 авг. 2021, в 08:36
3500 руб./за проект
03 авг. 2021, в 07:54
10000 руб./за проект
02 авг. 2021, в 23:34
750 руб./в час