TransWikia.com

Как правильно вводить русские символы из файла?

Stack Overflow на русском Asked by Fenix FVE on February 23, 2021

Допустим есть файл. Мне нужно получить все данные из него в формате масива строк (строка не длинее 80 символов).
Я решил попрбывать вывести содержимое масива в консоль. С латиницей всё отлично работает, но русские букву превращаются в случайные символы. Как это можно исправить?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>

char** readFile(char* filepath, int& strCount) {
    FILE* fp;
    fp = fopen(filepath, "r");
    if (fp == NULL) return NULL;

    strCount=0;
    char* buffer = (char*)malloc(sizeof(char) * 80);
    for (; fgets(buffer, 80, fp); strCount++);

    fseek(fp, 0L, SEEK_SET);
    char** strArray = (char**)malloc(sizeof(char*) * strCount);
    for (int i = 0; i < strCount; i++) {
        *(strArray + i) = (char*)malloc(sizeof(char) * 81);
    }
    for (int i = 0; i < strCount; i++) {
        fgets(strArray[i], 80, fp);
        int temp = strlen(strArray[i]);
        strArray[i][temp - 1] = '';
    }
    fclose(fp);

    return strArray;
}

int main() {
    setlocale(LC_ALL, "Russian");

    char filepath[] = "./Test_file/lab7.txt";
    int n = 0;
    char** ArrayStr = readFile(filepath, n);

    for (int i = 0; i < n; i++) {
        printf("%sn", ArrayStr[i]);
    }

    return 0;
}

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP