Считать текст из файла. Текст на русском языке. Провести замену всех символов текста в английской транслитерации

Реализовал транслитерацию с русского в английский, но хочу сделать так, чтобы программа из файла считывала русские буквы и переводила их в транслит. То есть, при запуске программы просим пользователя ввести путь к файлу (E:\test.txt), он считывается и выводится результат. Так же можно добавить проверку на дурака, что если вводишь неправильный путь, выводило, неправильный путь, введите его правильно.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <windows.h>
#include <locale.h>

#define size 256

int translation(char c)
{
    char rus[] = "ёйцукенгшщзхъфывапролджэячсмитьбю.";
    char eng[] = "`qwertyuiop[]asdfghjkl;'zxcvbnm,./";
    for (int i = 0; rus[i] != '\0'; i++)
    {
        if (c == rus[i])
            return eng[i];
    }
    return c;
}

int main()
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    setlocale(LC_ALL, "RUS");

    char str[size];

    for (int c = 0; (c = getchar()) != '\n';)
    {
        putchar(translation(c));
    }

    printf("\n");

    system("pause");
    return 0;
}

Ответы (1 шт):

Автор решения: SSA

Вот так можно сделать считывание файла и последующая передача полученных данных в уже созданную Вами функцию. О возможности ввода пути файла - попробуйте сами. Также, прокомментировал для малой ясности.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <windows.h>
#include <locale.h>
#include <fstream> // библиотека для работы с файлами
#include <string> // библиотека для работы getline.

#define size 256

int translation(char c)
{
    char rus[] = "ёйцукенгшщзхъфывапролджэячсмитьбю.";
    char eng[] = "`qwertyuiop[]asdfghjkl;'zxcvbnm,./";
    for (int i = 0; rus[i] != '\0'; i++)
    {
        if (c == rus[i])
            return eng[i];
    }
    return c;
}

void typing() {
    char str[size];

    for (int c = 0; (c = getchar()) != '\n';)
    {
        putchar(translation(c));
    }

    printf("\n");

}

void reading() {
    std::ifstream file("test.txt"); // ищем файл с именем по такому-то пути ( в нашем случае это в папке с исполнительным файлом )
    std::string s;
    if (file)
    {
        std::getline(file, s); // считываем всё из файла
        for (char i : s) {
            putchar(translation(i)); // передаём в функцию перевода прочитанный файл
        }
    }
}

int main()
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    setlocale(LC_ALL, "RUS");

    reading(); // вызываем функцию чтения из файла

    printf("\n");

    system("pause");
    return 0;
}
→ Ссылка