Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Kingl
Сообщений: n/a
#1

Работа с файлами - C++

30.11.2013, 00:55. Просмотров 361. Ответов 0
Метки нет (Все метки)

Составить программу, реализующую функции указанного ниже меню. Выполнить функциональное разбиение программного кода.

Меню программы:
1 – Сформировать с клавиатуры строку и записать в файл (строка может содержать пробелы);
2 – Считать строку из файла и распечатать;
3 – Зашифровать строку и записать в файл;
4 – Расшифровать строку и записать в файл;
5 – Выход.

Четные и нечетные символы меняются местами.

Вот что у меня получилось, все работает, но если сразу допустим 4 пункт меню выбрать, пропуская первый, то есть ничего не записывая в файл - виснет, а должно выводить ошибку. и функция "default" тоже не работает. Вот мой код:
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#include <io.h>
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <string.h>
#include <windows.h>
#include <ShellAPI.h>
 
void f(char*, char*);
 
void main()
{
    char Str1[100] = "";
    char Str2;
    unsigned char pm, i=0, j=0;
 
    setlocale(LC_CTYPE, "Russian");
 
    FILE *fl;
 
    for(;;)
    {
        puts("Выберите действие: \n");
        puts("1. Сформировать строку и записать в файл");
        puts("2. Считать строку и распечатать");
        puts("3. Зашифровать строку и записать в файл");
        puts("4. Расшифровать строку и записать в файл");
        puts("5. Выход.\n");
 
        pm=_getch();
 
        switch(pm)
        {
            case '1':
                if((fl=fopen("fl.txt", "w"))!=NULL) // Открываем файл только для записи
                {
                    puts("Введите строку: \n");
                    SetConsoleCP(1251);
                    gets(Str1); //Ввод строки
                    fputs(Str1, fl); // запись строки в файл
                    SetConsoleCP(866);
                    fclose(fl); //Закрыть файл после записи
 
                    puts("Строка записана успешно \n");
                }
                else
                {
                    puts("Ошибка при открытии файла \n");
                }
                    break;
 
            case '2':
                if ((fl=fopen("fl.txt", "r"))!=NULL) // Открываем файл только для чтения
                {
                    puts("Строка из файла: \n");
                    fgets(Str1, 100, fl); //Считывание строки из файла
                    puts(Str1);
                    printf("\n");
                    fclose(fl);
                }
                else
                {
                    puts("Ошибка при открытии файла \n");
                }
                break;
 
            case '3':
                if ((fl=fopen("fl.txt", "w+"))!=NULL) // Открываем файл для чтения и записи
                {
                    puts("Исходная строка:");
                    puts(Str1);
                    fgets(Str1, 100, fl);
                    printf("\n");
 
            f(str1, str2);
 
                    SetConsoleCP(1251);
                    fputs(Str1, fl);
                    SetConsoleCP(866);
                    puts("Зашифрованная строка:");
                    puts(Str1);
                    printf("\n");
                    fclose(fl);
 
                    puts("Строка успешно записана в файл \n");
                    }
                    else
                    {
                        puts("Ошибка при открытии файла \n");
                    }
                    break;
 
            case '4':
                if((fl=fopen("fl.txt", "w+"))!=NULL) // Открываем файл для чтения и записи
                {
                    puts("Исходная строка в файле:");
                    puts(Str1);
                    fgets(Str1, 100, fl);
                    printf("\n");
                    
            f(str1, str2);
                    
                    SetConsoleCP(1251);
                    fputs(Str1, fl);
                    SetConsoleCP(866);
                    puts("Расшифрованная строка:");
                    puts(Str1);
                    printf("\n");
                    fclose(fl);
                }
                else
                {
                    puts("Ошибка при открытии файла \n");
                }
                break;
 
            case '5':
                return;
default:
                puts("Введите значение от 1 до 5 \n");
                break;
        
    }
}
}
 
void f( char *str1, char *str2)
{
    for(int i=0; i<strlen(Str1)-1; i++)
    {             if(i%2==0) // Замена четного символа на нечетный
        {
            Str2=Str1[i];
            Str1[i]=Str1[i+1];
            Str1[i+1]=Str2;
        }
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2013, 00:55     Работа с файлами
Посмотрите здесь:

Работа с файлами - C++
Дано(в текстовом файле) n&gt;1000000 натуральных чисел (каждое число &lt;10000) записанных через пробел. Получить массив в котором все числа...

Работа с файлами - C++
Нужно записать с одного файла в другой на С++ Добавлено через 46 минут ап ап ап

Работа с файлами С++ - C++
Столкнулся с проблемой, что процедура мною созданная не работает. ОС winxp Среда разработки Visual Studio 2010 Вот код #include...

Работа с файлами - C++
Здравствуйте. В моей программе нужно зашифровать файл любого расширения, например jpg (я взял). Проблема в том, что: значения которые я...

Работа с файлами - C++
Всем доброго времени суток! Помогите решить задачку: нужно переписать текст из одного файла в другой, при этом убрав все пробелы! Заранее...

работа с файлами - C++
Дан текстовый файл и строка s. Если самая длинная строка файла не совпадает со строкой s, то строку s дописать в конец файла. Помогите...

Работа с файлами - C++
Помогите пожалуйста с этой задачей: даны файлы f и g, компоненты которых являются целыми числами. Записать в файл h сначала компоненты...

Работа с файлами С++ - C++
Доброго время суток! Подскажите где создавать текстовый файл для привязки его к коду. Чтобы после зборки, он нормально считывался...

Работа с файлами в C, C++ - C++
Есть, файл в котором храниться много чисел типа double Файл был записан следующим образом FILE * yy1; ...

Работа с файлами - C++
Хотелось бы разобраться как работать с файлами. Придумал программу самую простенькую, хочу загнать ее в файл. #include &lt;stdio.h&gt; ...


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

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

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