0 / 0 / 0
Регистрация: 22.12.2018
Сообщений: 6
1

Удалить в текстовом файле символы-разделители в конце строк

24.12.2018, 02:54. Показов 2950. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Прошу помощи у хороших знатаков библиотеки cstdio, C++.
Вроде бы задача не сложная, но никак не могу правильно написать.
Напишите пожалуйста код программы, буду очень благодарен таким
добрым людям.

Задание:
Создайте программу, которая будет удалять в текстовом файле символы-разделители
(Пробел, символ табуляции) в конце срок. Для работы с файлами используйте функции
cstdio.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2018, 02:54
Ответы с готовыми решениями:

Удалить в текстовом документе пробелы и символы табуляции в конце строк
Здравствуйте, ребята. Мне нужна на завтра написать программу, а иначе будут проблемы в...

Удалить в текстовом файле символ распределитель в конце строк
Нужно создать програму, что будет удалять в текстовом файле символ распределитель(пробел, символ...

В текстовом файле удалить заданные символы
Есть файл тхт. Нужно удалить в нем определенные символы. Вопрос - как это сделать средствами...

Удалить в текстовом файле 1.txt все строки, которые встречаются в текстовом файле 2.txt
например имеется текстовый файл 1.txt c таким содержанием 111 222 333 444 555 и имеется...

6
119 / 94 / 35
Регистрация: 18.12.2012
Сообщений: 654
24.12.2018, 03:01 2
Цитата Сообщение от SpectreKris Посмотреть сообщение
но никак не могу правильно написать
А что конкретно не получается ?
Вот хорошее описание cstdio - http://cppstudio.com/cat/309/323/ всё по-русски, всё понятно...
0
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,862
24.12.2018, 09:22 3
Цитата Сообщение от SpectreKris Посмотреть сообщение
Вроде бы задача не сложная, но никак не могу правильно написать.
Покажите попытки.
0
0 / 0 / 0
Регистрация: 22.12.2018
Сообщений: 6
24.12.2018, 13:43  [ТС] 4
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
#include "pch.h"
#include <iostream>
#include <locale>
#include <string>
using namespace std;
 
string ReplaceAll(string(str), const string& from, const string& to) {
    size_t start_pos = 0;
    cout << "abs" << endl;
    while ((start_pos = string(str).find(from, start_pos)) != string::npos) {
        cout << "kgfdhfhdg";
        string(str).replace(start_pos, from.length(), to);
        start_pos += to.length();
    }
    return string(str);
}
 
int main() {
    setlocale(LC_ALL, "Russian");
    FILE * in;
    in = fopen("file.txt", "a+");
    if (in != NULL) {
        cout << "Файл открыт";
        char str[1024];
        while (fgets(str, 1024, in)) {
            ReplaceAll(string(str), string (" "), string (""));
            ReplaceAll(string(str), string("\n"), string(""));
            fputs(str, in);
        }
        return 0;
    }
    else cout << "Ошибка открытия файла";
    return 1;
0
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,862
24.12.2018, 15:11 5
Цитата Сообщение от SpectreKris Посмотреть сообщение
string(str)
А это сработает? Не уверен что можно так просто привести обычную строку к плюсовой, да еще с обратным преобразованием.
Собственно, алгоритм может быть гораздо проще: считываете по одному символу, и если он непробельный ( ! isspace() ) то записываете в выходной файл, если пробельный - то игнорируете. Разумеется, одновременно читать и писать в один файл - плохая идея.
0
0 / 0 / 0
Регистрация: 22.12.2018
Сообщений: 6
24.12.2018, 18:42  [ТС] 6
Напиши, пожалуйста какие функции для этого мне нужно использовать, потому что интернет выдает функции из fstream, а мне надо из cstdio

Добавлено через 19 минут
Вот сделал по твоим рекомендациям. Все прекрасно работает, спасибо тебе большое. Единственное что в результате я поставил удаление пробелов и переносов строки и во втором файле с конце всего пишет "я"))
file1:aaa bbb ccc
ddd eee fff
file2:aaabbbcccdddeeefffя
Знаешь в чем причина?)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main() {
    setlocale(LC_ALL, "Russian");
    FILE * in;
    in = fopen("file1.txt", "r");
    FILE * out;
    out = fopen("file2.txt", "w");
    if (in != NULL && out != NULL) {
        cout << "Файлы открыты";
        int c;
        do {
            c = fgetc(in);
            if (c != 32 && c!=10)
                fputc(c, out);
        } while (c != EOF);
        return 0;
    }
    else cout << "Ошибка открытия файла";
    //cout << ReplaceAll(str, string("a"), string("b")) << endl;
    return 1;
}
0
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,862
24.12.2018, 21:40 7
0. Используйте теги форматирования кода
1. Вы не закрываете файлы.
2. Вместо прямой проверки кодов символов используйте функцию isspace() из <ctype.h>
3. Используйте форматирование кода.
4. Вы сначала записываете конец файла (EOF) в выходной файл, и только потом проверяете. Надо как-то так:
C
1
2
3
while( (c=fgetc(in)) != EOF ){
...
}
0
24.12.2018, 21:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2018, 21:40
Помогаю со студенческими работами здесь

Программа для поиска соответствие строк, учитывая регистр, в текстовом файле с 10000+ строк
Уважаемые форумчане, прошу у вас помощи я неделю в поисках. Мне нужна программа или код для поиска...

Одинаковые символы в начале и в конце строк файла
Нужна помощь по программе. Надо посчитать количество строк где первый символ совпадает с последним....

Одинаковые символы в начале и в конце строк файла
Нужна помощь по программе. Надо посчитать количество строк где первый символ совпадает с последним....

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


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

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

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