Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 5

Работа с файлами

28.05.2010, 03:06. Показов 1119. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем. Для решения своей проблемы использовал поиск по форуму но ничего достойного не нашел, поэтому последняя надежда на образованных. Всего имею код программы, которая меняет некоторые строки в текстовом файле.

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
#include "stdafx.h"
#include <conio.h>
#include <string>
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <time.h>
#include <sstream>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
 
void main()
{
    char name1[32];
    printf("Enter first word\n");
    gets(name1);
 
    char name2[32];
    printf("Enter second word\n");
    gets(name2);
    
        FILE *fin, *fout;
        size_t repl_wath_size, repl_to_size, inbuf_size, outbuf_size, delta, count;
        char *inbuf, *outbuf, *pbuf, *found;
        
        if ((fin = fopen(("Title.txt"), "r")) == NULL)
    {
                perror("Can't open input file!\n");
                exit(1);
        }
        
        fseek(fin, 0, SEEK_END);
        inbuf_size = ftell(fin);
        rewind(fin);
        
        if ((inbuf = (char*)malloc(inbuf_size + 1)) == NULL)
        {
                perror("Memory error!\n");
                exit(1);
        }
        if (fread(inbuf, 1, inbuf_size, fin) != inbuf_size)
        {
                perror("Error while reading file!\n");
                exit(1);
        }
        fclose(fin);
        inbuf[inbuf_size] = '\0';
        
        repl_wath_size = strlen(name1);
        repl_to_size = strlen(name2);
        delta = repl_to_size - repl_wath_size;
        
        /* підрахунок к-ті замін */
        count = 0;
        for (found = strstr(inbuf, name1); found != NULL; found = strstr(found + repl_wath_size, name1))
                count++;
        
        if (!count)
        {
                if ((outbuf = strdup(inbuf)) == NULL)
                {
                        perror("Memory error!\n");
                        exit(1);
                }
                outbuf_size = inbuf_size;
        }
        else
        {
                outbuf_size = inbuf_size + (delta * count);
                if ((outbuf = (char*)malloc(outbuf_size + 1)) == NULL)
                {
                        perror("Memory error!\n");
                        exit(1);
                }
                *outbuf = '\0';
                for (pbuf = inbuf, found = strstr(pbuf, name1); found != NULL; pbuf = found + repl_wath_size, found = strstr(pbuf, name1))
                {
                        strncat(outbuf, pbuf, found - pbuf);
                        strcat(outbuf, name2);
                }
                if (pbuf < inbuf + inbuf_size)
                        strcat(outbuf, pbuf);
        }
        
        if ((fout = fopen(("Title.txt"), "w")) == NULL)
        {
                perror("Can't open output file!\n");
                exit(1);
        }
        if (fwrite(outbuf, 1, outbuf_size, fout) != outbuf_size)
        {
                perror("Can't write to file!\n");
                exit(1);
        }
        
        fclose(fout);
        free(inbuf);
        inbuf = NULL;
        free(outbuf);
        outbuf = NULL;
        printf("Complete.\n");
        getch();
}]

Проблема в том, что по умолчанию программа открывает файл "Title.txt" а мне нужно чтобы она предлагала пользователю ввести название файла и потом открывала его.
Очень надеюсь на вашу помощь, пол Интернета перерыл и ничего нужного не нашел
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.05.2010, 03:06
Ответы с готовыми решениями:

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

Работа с файлами
Всем добрый вечер! Есть задание : Дан текстовый файл f. Исключить все пробелы, стоящие в концах его строк. Результат поместить в файл...

Работа с файлами
Здравствуйте! Помогите, пожалуйста с курсовиком...Необходимо написать программу, которая копировала бы все файлы форматов (.ppt) и (.pptx)...

6
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
28.05.2010, 03:16
ужос
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
#include "stdafx.h"
#include <conio.h>
#include <string>
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <time.h>
#include <sstream>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
 
void main()
{
        string fname;
        cout << "enter file name:";
        cin >> fname;
 
        char name1[32];
        printf("Enter first word\n");
        gets(name1);
 
        char name2[32];
        printf("Enter second word\n");
        gets(name2);
        
        FILE *fin, *fout;
        size_t repl_wath_size, repl_to_size, inbuf_size, outbuf_size, delta, count;
        char *inbuf, *outbuf, *pbuf, *found;
        
        if ((fin = fopen(fname.c_str(), "r")) == NULL)
        {
                perror("Can't open input file!\n");
                exit(1);
        }
        
        fseek(fin, 0, SEEK_END);
        inbuf_size = ftell(fin);
        rewind(fin);
        
        if ((inbuf = (char*)malloc(inbuf_size + 1)) == NULL)
                {
                perror("Memory error!\n");
                exit(1);
        }
        if (fread(inbuf, 1, inbuf_size, fin) != inbuf_size)
                {
                perror("Error while reading file!\n");
                exit(1);
        }
        fclose(fin);
        inbuf[inbuf_size] = '\0';
        
        repl_wath_size = strlen(name1);
        repl_to_size = strlen(name2);
        delta = repl_to_size - repl_wath_size;
        
        /* підрахунок к-ті замін */
        count = 0;
        for (found = strstr(inbuf, name1); found != NULL; found = strstr(found + repl_wath_size, name1))
                count++;
        
        if (!count)
                {
                if ((outbuf = strdup(inbuf)) == NULL)
                                {
                        perror("Memory error!\n");
                        exit(1);
                }
                outbuf_size = inbuf_size;
        }
        else
                {
                outbuf_size = inbuf_size + (delta * count);
                if ((outbuf = (char*)malloc(outbuf_size + 1)) == NULL)
                                {
                        perror("Memory error!\n");
                        exit(1);
                }
                *outbuf = '\0';
                for (pbuf = inbuf, found = strstr(pbuf, name1); found != NULL; pbuf = found + repl_wath_size, found = strstr(pbuf, name1))
                                {
                        strncat(outbuf, pbuf, found - pbuf);
                        strcat(outbuf, name2);
                }
                if (pbuf < inbuf + inbuf_size)
                        strcat(outbuf, pbuf);
        }
        
        if ((fout = fopen(fname.c_str(), "w")) == NULL)
                {
                perror("Can't open output file!\n");
                exit(1);
        }
        if (fwrite(outbuf, 1, outbuf_size, fout) != outbuf_size)
                {
                perror("Can't write to file!\n");
                exit(1);
        }
        
        fclose(fout);
        free(inbuf);
        inbuf = NULL;
        free(outbuf);
        outbuf = NULL;
        printf("Complete.\n");
                getch();
}
0
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 5
28.05.2010, 04:45  [ТС]
niXman спасибо за доработку. Код ужасный, не спорю, писал не я (скачал на схожем форуме), я только недавно приступил к работе с файлами, поетому ничему толковому еще не научился, но имею встречный вопрос, использую Visual Studio 2010, на твой код компилятор не матерится но когда дебажит, то выводит сообщение

enter file name:
/ / Ввожу
Enter first word
Enter second word
/ / Ввожу
Can't open input file!

и выход
в чем может быть проблема?
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
28.05.2010, 04:53
Цитата Сообщение от niXman Посмотреть сообщение
if ((fin = fopen(fname.c_str(), "r")) == NULL)
а файл, имя которого вводишь, существует?
0
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 5
28.05.2010, 04:59  [ТС]
Конечно, текстовый файл в той же папке что и екзешник.
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
28.05.2010, 05:02
либо он не в той же папке. либо что-то не правильно вводишь.
покажи где лежит файл, и как он зовется. и что вводишь.
0
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 5
28.05.2010, 05:10  [ТС]
Лови скрины.
Миниатюры
Работа с файлами   Работа с файлами  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.05.2010, 05:10
Помогаю со студенческими работами здесь

работа с файлами
Привет всем.Помогите мне написать программу на С++.Вот задания: Дан файл , компоненты которого являются действительными числами. Найти: ...

Работа с файлами
извените можете подсказат как можно сохранить данные в окне в txt файл чтобы с нажатием кнопки там и сохранился

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

работа с файлами
всем привет=) у меня возникли проблемы с кодом visual c++ 2008, вот собственно код: #include &quot;stdafx.h&quot; #include...

Работа с файлами
Помогите, пожалуйста, решить вот такую задачу. Заранее премного благодарна. Дан файл F, содержащий координаты множества точек на...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru