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

Поменять местами строчки в файле - C++

Восстановить пароль Регистрация
 
balizort
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 9
02.03.2014, 17:31     Поменять местами строчки в файле #1
В общем я уже знаю как при помощи fstream открывать файл, извлекать или записывать туда информацию.
Однако я не знаю, как переместить указатель на нужные строчки и при помощи дополнительной переменной поменять их местами.

Очень прошу помочь, в интернете смотрел ничего путнего не нашел.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2014, 17:31     Поменять местами строчки в файле
Посмотрите здесь:

Поменять местами C++
Поменять местами... C++
поменять местами две половины очереди местами C++
C++ Поменять местами строчки матрицы
Поменять местами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,180
Завершенные тесты: 1
02.03.2014, 17:50     Поменять местами строчки в файле #2
Удобнее всего открыть на запись новый файл.
Потом читайте исходный файл по строкам последовательно
и запоминаете строки, подлежащие перестановке.
Перематывает файл на начало, снова читаете его последовательно
и пишите в выходной файл, а в тот момент,
когда нужно будет вставить другую строку,
вставляете ее, а потом пишите дальше.
balizort
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 9
02.03.2014, 20:42  [ТС]     Поменять местами строчки в файле #3
Кто скажет, где я ошибся?! Необходимо чтобы менялись местами созданые структуры, а они не хотят.
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
int R2()
{
    system("cls");
    string naz;
    int i = 0;
    struct Obm sm[100];
    ifstream sporti("studio.txt");
    while (!sporti.eof())
    {
        if(!sporti.eof())
        {
            getline(sporti,naz);
            sm[i].spr = naz; i++;
        }
    }
    sm[5].spr = sm[1].spr;
    sm[1].spr = sm[2].spr;
    sm[2].spr = sm[5].spr;
    sm[5].spr = 'NULL';
    sporti.close();
    int j = 0;
    //ofstream sportj("studio.txt");
    for (int j=0; j<i;j++)
    {
        cout << sm[j].spr << endl;
    }
    //sportj.close();
    system("pause");
    system("cls");
    return 0;
}
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,180
Завершенные тесты: 1
02.03.2014, 21:19     Поменять местами строчки в файле #4
Цитата Сообщение от balizort Посмотреть сообщение
sm[5].spr = 'NULL';
Надо
sm[5].spr = "NULL";
Приведите объявление struct Obm
Возможно, присвоение по умолчанию к ней неприменимо.
Если spr - строка символов, то надо копировать строки:
C++
1
strcpy(sm[5].spr ,sm[1].spr);
balizort
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 9
03.03.2014, 19:11  [ТС]     Поменять местами строчки в файле #5
Про структуру:

C++
1
2
3
4
struct Obm
{
    string spr;
};
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,180
Завершенные тесты: 1
03.03.2014, 19:20     Поменять местами строчки в файле #6
Цитата Сообщение от zss Посмотреть сообщение
sm[5].spr = "NULL";
После исправления кавычек на двойные работает?
balizort
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 9
03.03.2014, 19:49  [ТС]     Поменять местами строчки в файле #7
Нет не работает. Не меняет местами почему-то.
mishelle92
57 / 56 / 19
Регистрация: 09.10.2012
Сообщений: 179
Завершенные тесты: 1
03.03.2014, 20:05     Поменять местами строчки в файле #8
Цитата Сообщение от balizort Посмотреть сообщение
C++
1
2
3
sm[5].spr = sm[1].spr;
sm[1].spr = sm[2].spr;
sm[2].spr = sm[5].spr;
Сильно не вникал, но не в том ошибка, что 5-му элементу присваивается 1-ый, а потом 2-му 5-ый (он уже стал равен 1-му)
balizort
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 9
03.03.2014, 20:31  [ТС]     Поменять местами строчки в файле #9
Получается
5 элемент равен 1
1 элемент равен 2
2 элемент равен 5
тоесть происходит смена 1 и 2 элементов через третью переменную.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.03.2014, 21:27     Поменять местами строчки в файле
Еще ссылки по теме:

C++ Поменять местами слова в файле
В двумерном массиве поменять местами максимальный и минимальный элемент местами C++
В бинарном файле поменять местами элементы, что стоят на парных местах с элементами, что стоят на непарных местах C++

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

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,180
Завершенные тесты: 1
03.03.2014, 21:27     Поменять местами строчки в файле #10
Вот в этом коде все прекрасно меняется.
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
#include <iostream>
#include <string>
using namespace std;
struct Obm
{
    string spr;
};
int main()
{
    string naz;
    struct Obm sm[6];
    for(char i='1';i<'6';i++)
    {
            naz="str ";
            naz.push_back(i);
            sm[i-'1'].spr = naz;
    }
    for (int j=0; j<6;j++)
    {
        cout << sm[j].spr << endl;
    }
    sm[5].spr = sm[1].spr;
    sm[1].spr = sm[2].spr;
    sm[2].spr = sm[5].spr;
    sm[5].spr = "NULL";
    for (int j=0; j<6;j++)
    {
        cout << sm[j].spr << endl;
    }
    system("pause");
    return 0;
}
Может проблема в файле "studio.txt"?
Yandex
Объявления
03.03.2014, 21:27     Поменять местами строчки в файле
Ответ Создать тему
Опции темы

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