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

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

Восстановить пароль Регистрация
 
Kingl
Сообщений: n/a
30.11.2013, 00:55     Работа с файлами #1
Составить программу, реализующую функции указанного ниже меню. Выполнить функциональное разбиение программного кода.

Меню программы:
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++
C++ Работа с файлами
Работа с файлами C++
Работа с файлами C++
C++ Работа с файлами
Работа с файлами C++
Работа с файлами C++
Работа с файлами C++

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

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

Текущее время: 04:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru