1 / 1 / 0
Регистрация: 09.04.2018
Сообщений: 18
1

Как добавить в код выбор входного файла и выбор выходного?

01.02.2020, 16:47. Показов 1151. Ответов 2
Метки нет (Все метки)

Здравствуйте. Нужна ваша помощь, вот есть код, как сюда можно добавить выбор входного и выходного файла?
Чтобы сначала выбирал файл, потом выводилось что с ним нужно сделать и после выбора примеру "Шифрования", он в конце предлагал ввести путь для файла в который сохранить нужно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#define _CRT_SECURE_NO_WARNINGS
#include <conio.h> 
#include <iostream>
#include <stdio.h>
#include <ctype.h>
#include <locale.h>
 
 
using namespace std;
 
void main()
{
    char a;
    const char* fileName = "in.txt";
    FILE* f = fopen(fileName, "r");
    const char* fileOut = "out.txt";
    FILE* fo = fopen(fileOut, "w");
    int* key, ans, k;
    setlocale(LC_ALL, "Russian");
    cout << "Пожалуйста введите: \n 1 ---- для шифрования\n 2 ---- для дешифрования \n 3 ---- для закрытия программы\n\n---------- ";
    cin >> ans;
 
    if (ans == 1)
    {
        while ((k = fgetc(f)) != EOF)
        {
            a = k;
            if (((int)a > -65) && ((int)a < 0))
            {
                if (a == (char)-33) a = (char)-64;
                else
                {
                    if (a == (char)-1) a = (char)-32; 
                    else
                        a += 1;
                }
            }
            else a = a;
            fprintf(fo, "%c", a);
        }
        cout << "Процесс шифрования завершен \n";
        cout << "Нажмите Enter для выхода из программы \n";
       
    }
    if (ans == 2)
    {
        while ((k = fgetc(f)) != EOF)
        {
            a = k;
            if (((int)a > +65) && ((int)a < 0))
            {
                if (a == (char)+64) a = (char)+33;
                else
                {
                    if (a == (char)+32) a = (char)+1;
                    else
                        a += 1;
                }
            }
            else a = a;
            fprintf(fo, "%c", a);
        }
        cout << "Процесс дешифрования завершен \n";
        cout << "Нажмите Enter для выхода из программы \n";
       
    }
    else if (ans == 3)
    {
        printf("Закрытие программы\n");
        exit(0);
    }
    else {
        printf("Нет такого значения!\nЗакрытие программы\n");
    }
    fclose(f);
    fclose(fo);
    system("pause");
}
Добавлено через 13 минут
И есть ещё вопрос. Сейчас в коде при шифровании он меняет букву на следующую в алфавите, того же регистра т.е. А->Б, а->б. Но как можно сделать чтобы он не на следующую менял, а на +3 к примеру, чтобы запрашивало значение к примеру K=, ввести значение, к примеру 3 и он бы менял а->в т.е. на 3 букву по алфавиту ?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.02.2020, 16:47
Ответы с готовыми решениями:

Ввод входного и выходного файла
Есть рабочая программа для копирования файлов. Задача: Сделать так, чтобы при запуске экзешника...

Имена входного и выходного файла
Написал код программы, но еще нужно чтобы Входные данные были в файле Z.inp Результат работы были...

Как добавить выбор файла из директории?
Здравствуйте. У меня есть код программы, которая строит гистограммы из заданного файла. Подскажите,...

Записать в строки выходного файла буквы в порядке уменьшения частоты их встречаемости в строках входного файла
17. В исходном текстовом файле записаны строки, содержащие текст на английском языке. Требуется...

2
1 / 1 / 0
Регистрация: 09.04.2018
Сообщений: 18
02.02.2020, 00:32  [ТС] 2
Второй вопрос решил, а вот с функцией для ввода названия не получается, нужна ваша помощь
Вот как решил второй вопрос(если кому то интересно)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#define _CRT_SECURE_NO_WARNINGS
#include <conio.h> 
#include <iostream>
#include <stdio.h>
#include <ctype.h>
#include <locale.h>
using namespace std;
int main()
{
    char a;
    const char* fileName = "in.txt";
    FILE* f = fopen(fileName, "r");
    const char* fileOut = "out.txt";
    FILE* fo = fopen(fileOut, "w");
    int* key, ans, k, b;
    setlocale(LC_ALL, "Russian");
    fileName;
    cout << "Пожалуйста введите: \n 1 ---- для шифрования\n 2 ---- для дешифрования \n 3 ---- для закрытия программы\n\n---------- ";
    cin >> ans;
    if (ans == 1)
    {
        cout << "Введите K = ";
        cin >> b;
        while ((k = fgetc(f)) != EOF)
        {
            a = k;
            if (((int)a > -65) && ((int)a < 0))
            {
                if (a == (char)-33) a = (char)-64;
                else
                {
                    if (a == (char)-1) a = (char)-32;
                    else
                        a += b;
                }
            }
            else a = a;
            fprintf(fo, "%c", a);
        }
        cout << "Процесс шифрования завершен \n";
        cout << "Нажмите Enter для выхода из программы \n";
        exit(0);
    }
    if (ans == 2)
    {
        cout << "Введите K = ";
        cin >> b;
        while ((k = fgetc(f)) != EOF)
        {
            a = k;
            if (((int)a > +65) && ((int)a < 0))
            {
                if (a == (char)+64) a = (char)+33;
                else
                {
                    if (a == (char)+32) a = (char)+1;
                    else
                        a += b;
                }
            }
            else a = a;
            fprintf(fo, "%c", a);
        }
        cout << "Процесс дешифрования завершен \n";
        cout << "Нажмите Enter для выхода из программы \n";
        exit(0);
    }
    else if (ans == 3)
    {
        printf("Закрытие программы\n");
        exit(0);
    }
    else {
        printf("Нет такого значения!\nЗакрытие программы\n");
    }
    fclose(f);
    fclose(fo);
    system("pause");
}
0
Мозгоправ
1729 / 1023 / 468
Регистрация: 01.10.2018
Сообщений: 2,137
Записей в блоге: 2
02.02.2020, 04:26 3
Лучший ответ Сообщение было отмечено Konstantine863 как решение

Решение

Цитата Сообщение от Konstantine863 Посмотреть сообщение
Чтобы сначала выбирал файл,
Как-то так:
C
1
2
3
4
5
6
#include <stdlib.h>
...
    char fileName[_MAX_PATH + 1];
    printf("введите имя файла: ");
    gets_s(fileName, _MAX_PATH);
    FILE* f = fopen(fileName, "r");
PS. Вообще-то это раздел форума для C++. Вам в C для начинающих.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.02.2020, 04:26

Ввод имени входного/выходного файла с клавиатуры (fstream)
Подскажите, пожалуйста, как можно организовать ввод имени входных/выходных файлов для их...

Простая сортировка массива, с использованием входного и выходного файла
Добрый день. Задача: дан массив целых чисел - отсортировать его в порядке неубывания. Формат...

Сборка библиотеки и ошибка "fatal error LNK1149: имя выходного файла совпадает с именем входного файла"
при сборке библиотеки возникает такая ошибка LINK : fatal error LNK1149: имя выходного файла...

Добавить выбор папок в код объединения файлов
Добрый день всем! Возникла вроде простая задача: необходимо в из двух папок объединить попарно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.