-12 / 0 / 4
Регистрация: 04.10.2014
Сообщений: 272
1

Сохранение в файл

04.05.2015, 23:39. Показов 1136. Ответов 3
Метки нет (Все метки)

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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <iostream>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#include <sstream>
#include <fstream>
 
using namespace std;
 
 
void main()
{
    FILE *f4;
 
//Программа шифрования/дешифрования  алгоритмом Виженера
 
    
        int k; //Переменная выбора - шифрование/дешифрование
        string result = ""; //Строка - результат
        string key = ""; //Строка - ключ 
        string key_on_s = "";
        bool flag;
        int x = 0, y = 0; //Координаты нового символа из таблицы Виженера
        int registr = 0; //Регистр символа
        char dublicat; //Дубликат прописной буквы
        //Формирование таблицы Виженера на алфавите латиницы
        int shift = 0;
        char **tabula_recta = new char *[26]; //Таблица Виженера
        for (int i=0;i<26;i++)
            tabula_recta[i] = new char [26];
        string alfabet = "abcdefghijklmnopqrstuvwxyz"; //Алфавит латиницы
        //Формирование таблицы
        for (int i = 0; i < 26; i++)
            for (int j = 0; j < 26; j++)
                {
                    shift = j + i;
                    if (shift >= 26) shift = shift % 26;
                        tabula_recta[i][j] = alfabet[shift];
                }
            cout<<"Read of file...\n";
            setlocale(LC_ALL,"Russian");//Чтение файла
            string s; //Строка считанная из файла
            ifstream in("D:\\Тестовый\\Пароль.txt");
            getline(in,s);
            in.close(); 
            cout<<"Enter key encryption\n";
            cin>>key;
           //Формирование строки, длиной шифруемой, состоящей из повторений ключа
            for (int i = 0; i < s.length(); i++)
                {
                    key_on_s += key[i % key.length()];
                }
            //Шифрование при помощи таблицы
            for (int i = 0; i < s.length(); i++)
                {
                    //Если нешифруемый символ
                    if (((int)(s[i]) < 65) || ((int)(s[i]) > 122))
                        result += s[i];
                    else
                        {
                            //Поиск в первом столбце строки, начинающейся с символа ключа
                            int l = 0;
                            flag = false;
                            //Пока не найден символ
                            while ((l < 26) && (flag == false))
                            {
                                //Если символ найден
                                if (key_on_s[i] == tabula_recta[l][0])
                                {
                                    //Запоминаем в х номер строки
                                    x = l;
                                    flag = true;
                                }
                                l++;
                            }
                            //Уменьшаем временно регистр прописной буквы
                            if (((int)(s[i]) <= 90) && ((int)(s[i]) >= 65))
                            {
                                dublicat = (char)((int)(s[i]) + 32);
                                registr = 1;
                            }
                            else
                            {
                                registr = 0;
                                dublicat = s[i];
                            }
                            l = 0;
                            flag = false;
                            //Пока не найден столбец в первой строке с символом строки
                            while ((l < 26) && (flag == false))
                            {
                                if (dublicat == tabula_recta[0][l])
                                {
                                    //Запоминаем номер столбца
                                    y = l;
                                    flag = true;
                                }
                                l++;
                            }
                            //Увеличиваем регистр буквы до прописной
                            if (registr == 1)
                            {
                                //Изменяем символ на первоначальный регистр
                                dublicat = char((int)(tabula_recta[x][y]) - 32);
                                result += dublicat;
                            }
                            else
                                result += tabula_recta[x][y];
                        }
                    }
            cout<<result;
          f4 = fopen("D:\\Тестовый\\Пароль2.txt ", "w");
 printf("Невозможно открыть файл \n");
      fprintf(f4,"%s",result);            
      fclose(f4);
}
Сохраняется не та строка,которая выводится после шифрования,что не так?
Миниатюры
Сохранение в файл   Сохранение в файл  
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.05.2015, 23:39
Ответы с готовыми решениями:

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

Сохранение положения компонента на форме (Сохранение параметра в Ini-файл)
Не знаю верно ли назвал тему. Доброго вечера тебе, всяк сюда входящий. Подскажите пожалуйста с...

При сохранение файла word (права доступа на сохранение ограничены) появляется пустой файл
Добрый день! Проблема такая: Допустим есть пользователь, у которого ограничены права (может...

Вывод файла, ввод в файл новых строк и сохранение этого в файл
у меня есть файл, с property и мне в него надо записать новые пары идентификатор = значение я...

3
lss
939 / 867 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
05.05.2015, 01:35 2
Лучший ответ Сообщение было отмечено artart96 как решение

Решение

Цитата Сообщение от artart96 Посмотреть сообщение
FILE *f4;
Цитата Сообщение от artart96 Посмотреть сообщение
string result = ""; //Строка - результат
Цитата Сообщение от artart96 Посмотреть сообщение
fprintf(f4,"%s",result);
Си-шные функции что-то знают про класс string?

Добавлено через 1 минуту
Попробуй так:
C++
1
fprintf(f4,"%s", result.c_str());
1
11 / 10 / 7
Регистрация: 07.05.2013
Сообщений: 248
05.05.2015, 14:33 3
почему бы не использовать fout? (схоже с cout, только для работы с файлами)
0
lss
939 / 867 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
05.05.2015, 15:56 4
Цитата Сообщение от wolf1396 Посмотреть сообщение
почему бы не использовать fout? (схоже с cout, только для работы с файлами)
Что за зверь такой - fout?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.05.2015, 15:56
Помогаю со студенческими работами здесь

Сохранение рваного массива в файл и его загрузка в программу через файл
Не работает как надо. Что нужно исправить? private void btnLoadRaggedArray_Click(object...

Файл: При сохранение в файл big100.txt в блокноте отображаются иероглифы, почему?
При сохранение в файл big100.txt в блокноте отображаются иероглифы интересно почему...

Сохранение в файл. Если файл указан некорректно
Здравствуйте. Есть Edit4, в котором пользователь указывает, в какой файл сохранять данные....

Сохранение в файл (права на файл и папку)
Есть форма. Данные с форму передаются скрипту. Скрипт записывает данные с формы в файл. Скрипт:...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru