Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
MELbHUK
-1 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 43
1

Файловые потоки в Си и С++

03.10.2014, 13:21. Просмотров 736. Ответов 2
Метки нет (Все метки)

Вот код. Нужно использовать чтение из файла и запись в файл, такое же как и в языке СИ (без использования библиотек которых нет в СИ).
Я думаю с помощью (fopen, fprintf и т.д.), но как сделать не знаю. Помогите пожалуйста.
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
#include <iostream>
#include <fstream>
#include <ctype.h>
#include <stdio.h>
 
 
 
using namespace std;
 
 
 
int main()
{
    
    ifstream F;
    F.open("C:\\Users\\Павел\\Documents\\Visual Studio 2013\\Projects\\байда\\Текст.txt");
    ofstream G;
    G.open("C:\\Users\\Павел\\Documents\\Visual Studio 2013\\Projects\\байда\\Текст2.txt");
    //Переменные 
    int i = 0;
    int const N = 100000;
    char *text = new char[N];
    double itog;
    double symb = 0;
    int sum = 0;
    char alf[] = "abcdefghijklmnopqrstuvwxyz";
    int j;
    int alflength = strlen(alf);
    int tabl[2][40] = { { ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'j', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '!', '?', ',', '.' }, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 11, 12, 13, 14, 15, 16, 17, 18, 19, 'b', 21, 22, 23, 24, 25, 26, 27, 28, 29, 'c', 31, 32, 33, 35 } };
    int kodtext;
    int length;
    int n=0;
    //
 
    
    G << "Частота букв"<<endl;   // надо заменить
    for (j = 0; j < alflength; j++)
    {
        
        symb = 0;
        char a = alf[j];
 
        while (!F.eof())   // надо заменить
        {
 
            F.getline(text, N);    // надо заменить
            if (j == 0)
                
            if (j == 0)
            {
                for (int m = 0; text[m] != '\0'; m++)
                {
                    if (isalpha(text[m]))
                        sum = sum + 1;
                }
            }
            length = strlen(text);
            for (i = 0; i != length; i++)
            {
                if (a == tolower(text[i]))
                    symb = symb + 1;
            }
 
        }
         
        F.clear();     // надо заменить
        F.seekg(0, ios::beg);    // надо заменить
        if (symb != 0)
        {
    
            itog = symb / sum;
            G << alf[j] << ":" << itog << "\n" ;    // надо заменить
        }
    }
 
    
    
    while (!F.eof())    // надо заменить
    {
        F.getline(text, N);   // надо заменить
        for (i = 0; i < length; i++)
        {
            kodtext = tolower (text[i]);
            for (j = 0; j < 40; j++)
            {
 
                if (kodtext == tabl[0][j])
                {
                    G << tabl[1][j];
                    break;
                }
 
            }
        }
        G << "\n";   // надо заменить
    }
    G.close();   // надо заменить
    F.close();   // надо заменить
 
    
    return 0;
 
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2014, 13:21
Ответы с готовыми решениями:

Файловые потоки
Для каждого автобуса автопарка укажите его номер, маршрут, фамилию и инициалы...

Файловые потоки
Компилятор ругается при создании экземпляра класса ofstream. Среда разработки -...

Файловые потоки
Структура enum status {Boss=1, Manager}; struct Worker { ...

файловые потоки
Помогите найти ошибку! Программа из книги Дейтелов!Не понимаю что я пропустил...

Файловые потоки
1 задача) Дан текстовый файл. Напечатать все строки, в которых имеется хотя бы...

2
alsav22
5445 / 4840 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2014, 13:37 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
80
81
82
83
84
#include <ctype.h>
#include <stdio.h>
 
int main()
{
    FILE* F;
    F = fopen("C:\\Users\\Павел\\Documents\\Visual Studio 2013\\Projects\\байда\\Текст.txt", "r");
    FILE* G;
    G = fopen("C:\\Users\\Павел\\Documents\\Visual Studio 2013\\Projects\\байда\\Текст2.txt", "w");
    //Переменные 
    int i = 0;
    int const N = 100000;
    char *text = new char[N];
    double itog;
    double symb = 0;
    int sum = 0;
    char alf[] = "abcdefghijklmnopqrstuvwxyz";
    int j;
    int alflength = strlen(alf);
    int tabl[2][40] = { { ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'j', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '!', '?', ',', '.' }, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 11, 12, 13, 14, 15, 16, 17, 18, 19, 'b', 21, 22, 23, 24, 25, 26, 27, 28, 29, 'c', 31, 32, 33, 35 } };
    int kodtext;
    int length;
    int n=0;
    //
 
    fprintf(G, "%s\n", "Частота букв");
    for (j = 0; j < alflength; j++)
    {
        symb = 0;
        char a = alf[j];
 
        while (!feof(F))
        {
 
            fgets(text, N, F);
            if (j == 0)
                
            if (j == 0)
            {
                for (int m = 0; text[m] != '\0'; m++)
                {
                    if (isalpha(text[m]))
                        sum = sum + 1;
                }
            }
            length = strlen(text);
            for (i = 0; i != length; i++)
            {
                if (a == tolower(text[i]))
                    symb = symb + 1;
            }
 
        }
        rewind(F);
        
        if (symb != 0)
        {
            itog = symb / sum;
            fprintf(G, "%c%c%lf\n", alf[j], ':', itog);
        }
    }
 
    while (!feof(F))
    {
        fgets(text, N, F);
        for (i = 0; i < length; i++)
        {
            kodtext = tolower (text[i]);
            for (j = 0; j < 40; j++)
            {
                if (kodtext == tabl[0][j])
                {
                    fprintf(G, "%d", tabl[1][j]);
                    break;
                }
            }
        }
        fputc('\n', G);
    }
    fclose(G);
    fclose(F);
 
    return 0;
 }
1
MELbHUK
-1 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 43
03.10.2014, 13:48  [ТС] 3
Там в Visual Studio еще выдает ошибку. фиксится вот так:#define _CRT_SECURE_NO_WARNINGS (прописать перед всеми include)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2014, 13:48

Файловые потоки и функции
Скажите пожалуйста, как передать файловый поток в функцию?

Бинарные файловые потоки
Нужно написать две функции, одна из них сохраняет перечень в бинарный файл,...

Файловые указатели. Потоки
Вот какой вопрос у меня появился. Пусть есть 2 указателя, связанных с одним и...


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

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

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