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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 407
#1

Записать в перевернутом виде строки файла F в файл G - C++

03.04.2014, 22:30. Просмотров 950. Ответов 18
Метки нет (Все метки)

Здравствуйте. Не знаю, как заставить работать программу. Буду очень благодарен за помощь

Дан текстовый файл F. Записать в перевернутом виде строки файла F в файл G.Порядок строк в файле G должен быть обратным


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
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
 
int main()
{
    FILE *in;
    FILE *out;
    in=fopen("C:\\100VIDEO\\F.txt", "r");
    out=fopen("C:\\100VIDEO\\G.txt", "w");
    char ch;
    char str[256];
    int i=0;
    int cout=0;
    if(in!=NULL)
    {
    while(ch=gets((in))!=EOF)
    {
        str[i]=ch;
        i++;
        cout++;
    }
    str[i]='\0';
    }
    else 
        {
            printf("Невозможно открыть файл!");
            return 1;
    }
    if(in!=NULL)
    {
    for(cout=strlen(?);cout=0; cout--) // не знаю как измерить длину всех строк файла out
    {
        puts(str[i],out);
    }
    }
    else 
        {
            printf("Невозможно открыть файл!");
            return 1;
    }
    fclose(in);
    fclose(out);
    system("pause");
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2014, 22:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Записать в перевернутом виде строки файла F в файл G (C++):

Записать в перевернутом виде строки файла f в файл g - C++
Дан текстовый файл f. Записать в перевернутом виде строки файла f в файл g. Порядок строк в файле g должен совпадать с порядком исходных...

Присоединить к данному файлу такой же файл в перевернутом виде - C++
Дан файл чисел. Присоединить к данному файлу такой же файл в перевернутом виде.

Дан исходный текстовый файл. Записать его строки в выходной файл в перевёрнутом виде - C++
грозят отчислением, нужно решить

Текстовый файл состоит из нескольких строк. Записать во второй файл последние символы из каждой строки первого файла - C++
Текстовый файл состоит из нескольких строк. Записать во второй файл последние символы из каждой строки первого файла. === Помогите,...

Дан входной текстовый файл, строка S (вводится с клавиатуры). Записать в выходной файл все строки входного файла, содержащие в качестве фрагмента стро - C++
Дан входной текстовый файл, строка S (вводится с клавиатуры). Записать в выходной файл все строки входного файла, содержащие в качестве...

Считать строки из файла, изменить и записать в другой файл - C++
Добрый день. Есть входящий файл: Лицевой счёт 1010047078 показания счётчика (9243) 1010029116 6036 Ао НЭСК 1010004047 167490 ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
newbie666
Заблокирован
03.04.2014, 22:48 #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
#include <tchar.h>
#include <fstream>
#include <string>
#include <vector>
 
int _tmain(int argc, _TCHAR* argv[])
{
    std::fstream fs(L"F.txt", std::ios::in);
    if(!fs.is_open())
        return 0;
 
    std::vector<std::string> fileStrings;
    while (!fs.eof())
    {
        std::string tmp;
        fs >> tmp;
        std::reverse(tmp.begin(), tmp.end());
        fileStrings.push_back(tmp);
    }
    fs.close();
 
    fs.open(L"G.txt", std::ios::out);
    if(!fs.is_open())
        return 0;
    for(auto it = fileStrings.rbegin(); it != fileStrings.rend(); it++)
        fs << *it << std::endl;
    fs.close();
 
    return 0;
}
1
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 407
03.04.2014, 23:02  [ТС] #3
Спасибо большое, если не трудно напишите, пожалуйста, пару комментариев, а то боюсь не разбрерусь
0
newbie666
Заблокирован
03.04.2014, 23:10 #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
34
35
int _tmain(int argc, _TCHAR* argv[])
{
//ну а чё не понятно - то :-)  Открываем файл для чтения - std::ios::in
    std::fstream fs(L"F.txt", std::ios::in);
    if(!fs.is_open())
        return 0;
 //создаём вектор строк
    std::vector<std::string> fileStrings;
    while (!fs.eof())
    {
        std::string tmp;
//вытаскиваем одну строку из файлового потока во временную строку (>> в файловом текстовом потоке
//означает вытаскивания всех символов до пробела или переноса строки, тоесть в данном случае 
//вытаскиваем одну строку
        fs >> tmp;
//переворачиваем символы в строке наизнанку
        std::reverse(tmp.begin(), tmp.end());
//загоняем перевёрнутую (реверсивную) строку в вектор
        fileStrings.push_back(tmp);
    }
    fs.close();
 //закрываем входной файл и снизу открываем уже другой файл на запись 
    fs.open(L"G.txt", std::ios::out);
    if(!fs.is_open())
        return 0;
//наверное это самое не понятное? :-)  тут auto - это автоматическое определение типа итератора it
//rbegin - начало чтения вектора с конца, rend - конец чтения вектора с конца, грубо говоря вектор 
//перечисляется в обратном порядке
    for(auto it = fileStrings.rbegin(); it != fileStrings.rend(); it++)
        fs << *it << std::endl; // ну тут просто загоняем строки в новый файл добавляя перенос строки в
 //конце ( << std::endl;
    fs.close();
 
    return 0;
}
0
Vourhey
Почетный модератор
6481 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
03.04.2014, 23:30 #5
навскидку:
Цитата Сообщение от newbie666 Посмотреть сообщение
//вытаскиваем одну строку
* * * * fs >> tmp;
не строку, а слово.
Цитата Сообщение от newbie666 Посмотреть сообщение
for(auto it = fileStrings.rbegin(); it != fileStrings.rend(); it++)
* * * * fs << *it << std::endl;
Выведет слова, каждое с новой строки. А не строки в обратном порядке.
Хрень получится.

Добавлено через 2 минуты

Не по теме:

avatar1870, аффтар, ты жжошь. Иди сдавай.

0
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 407
03.04.2014, 23:34  [ТС] #6
А можно как-то поправить, что бы выводило строками?
0
newbie666
Заблокирован
03.04.2014, 23:38 #7
Цитата Сообщение от Vourhey Посмотреть сообщение
не строку, а слово.
аа там про строки а не про слова была речь :-))) Я уже сплю ... ну тогда так
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
#include <tchar.h>
#include <fstream>
#include <string>
#include <vector>
 
int _tmain(int argc, _TCHAR* argv[])
{
    std::fstream fs(L"F.txt", std::ios::in);
    if(!fs.is_open())
        return 0;
 
    std::vector<std::string> fileStrings;
    while (true)
    {
        std::string tmp;
        while (true)
        {
            char oneChar;
            fs.read(&oneChar, 1);
            if(fs.eof() || oneChar == '\n')
                break;
            tmp += oneChar;
        }
        if(!tmp.empty())
        {
            std::reverse(tmp.begin(), tmp.end());
            fileStrings.push_back(tmp);
        }       
        if(fs.eof())
            break;  
    }
    fs.close();
 
    fs.open(L"G.txt", std::ios::out);
    if(!fs.is_open())
        return 0;
    for(auto it = fileStrings.rbegin(); it != fileStrings.rend(); it++)
        fs << *it << std::endl;
    fs.close();
 
    return 0;
}
Цитата Сообщение от Vourhey Посмотреть сообщение
Выведет слова, каждое с новой строки. А не строки в обратном порядке.
а тут вы ошибаетесь - всё будет тип топ
1
Vourhey
Почетный модератор
6481 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
03.04.2014, 23:43 #8
Цитата Сообщение от newbie666 Посмотреть сообщение
а тут вы ошибаетесь - всё будет тип топ
Нифига тип-топ не будет. Сам подумай. У тебя слова в векторе. ты выводишь каждое слово и после него символ новой строки. И какой здесь тип-топ?
0
newbie666
Заблокирован
03.04.2014, 23:45 #9
Цитата Сообщение от Vourhey Посмотреть сообщение
У тебя слова в векторе
во втором варианте уже строки а не слова, так что всё будет тип топ - нц последний вариант посмотри. Не веришь - компильни .. ладно, я на боковую
0
Vourhey
Почетный модератор
6481 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
04.04.2014, 00:03 #10
Цитата Сообщение от newbie666 Посмотреть сообщение
во втором варианте уже строки а не слова, так что всё будет тип топ
Мое сообщение было до твоего второго варианта. Так что это ты ошибаешься, а не я. Никакого тип-топа там нет.

Добавлено через 2 минуты
Ну и мой вариант тогда уж...
C++
1
2
3
4
5
6
7
8
9
10
#include <fstream>
 
int main()
{
    std::ifstream in("F");
    std::ofstream out("G");
    char c;
    for(in.seekg(-2, std::ios::end);in;c=in.peek(),out<<c,in.unget());
    out.close(), in.close();
}
Добавлено через 12 минут
Цитата Сообщение от newbie666 Посмотреть сообщение
while (true)
* * * * {
* * * * * * char oneChar;
* * * * * * fs.read(&oneChar, 1);
* * * * * * if(fs.eof() || oneChar == '\n')
* * * * * * * * break;
* * * * * * tmp += oneChar;
* * * * }
Здесь удобнее просто std::getline
0
newbie666
Заблокирован
04.04.2014, 11:56 #11
Цитата Сообщение от Vourhey Посмотреть сообщение
Ну и мой вариант тогда уж...
а это ясен пень не работает
0
Vourhey
Почетный модератор
6481 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
04.04.2014, 13:22 #12
Цитата Сообщение от newbie666 Посмотреть сообщение
а это ясен пень не работает
Работает.

Добавлено через 4 минуты
До:
Код
[admin@centosdevx64 one]$ cat F
Did you never gave a damn in the first place?
Maybe it's time you had the tables turned

Cause in the interest of all involved I got the problem solved
And the verdict is guilty...
После:
Код
[admin@centosdevx64 one]$ cat G
...ytliug si tcidrev eht dnA
devlos melborp eht tog I devlovni lla fo tseretni eht ni esuaC

denrut selbat eht dah uoy emit s'ti ebyaM
?ecalp tsrif eht ni nmad a evag reven uoy diD
Цитата Сообщение от avatar1870 Посмотреть сообщение
в перевернутом виде строки
Строки перевернуты
Цитата Сообщение от avatar1870 Посмотреть сообщение
Порядок строк в файле G должен быть обратным
идут в обратном порядке.
0
newbie666
Заблокирован
04.04.2014, 15:12 #13
Цитата Сообщение от Vourhey Посмотреть сообщение
Работает.
Да нет же Да и как такое вообще может работать...

Цитата Сообщение от Vourhey Посмотреть сообщение
Ну и мой вариант тогда уж...
#include <fstream>
int main()
{
* * std::ifstream in("F");
* * std::ofstream out("G");
* * char c;
* * for(in.seekg(-2, std::ios::end);in;c=in.peek(),out<<c,in.unget());
* * out.close(), in.close();
}
ДО: (F.txt)
C++
1
2
123 456 789
ABC DEF
ПОСЛЕ: (G.TXT)
C++
1
E
и всё

Добавлено через 15 минут

Не по теме:

Vourhey, сделай меня лучше админом тут

0
Vourhey
Почетный модератор
6481 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
04.04.2014, 15:21 #14
Код
[admin@centosdevx64 one]$ cat F 
123 456 789
ABC DEF
[admin@centosdevx64 one]$ cat G
FED CBA
987 654 321
Добавлено через 1 минуту
Цитата Сообщение от newbie666 Посмотреть сообщение
Да и как такое вообще может работать...
Легко.
0
newbie666
Заблокирован
04.04.2014, 15:36 #15
Цитата Сообщение от Vourhey Посмотреть сообщение
[admin@centosdevx64 one]$ cat F
это что ваще такое?
Легко не легко - создал пустой консольный проект в VS2012, скопипастил туда твои строки и результат как и моим постов выше, может у тебя чудо компилятор ?

Добавлено через 40 секунд
Цитата Сообщение от newbie666 Посмотреть сообщение
Vourhey, сделай меня лучше админом тут
так что по поводу этого?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2014, 15:36
Привет! Вот еще темы с ответами:

Записать в выходной файл все строки входного файла - C++
Помогите пожалуйста, через три дня сдавать. буду очень благодарен=) Дан входной текстовый файл, строка S (вводится с клавиатуры)....

Записать в созданный файл все строки из файла add.txt - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; #include &lt;Windows.h&gt; #include &lt;clocale&gt; #include &lt;sstream&gt; // ...

Записать в файл максимальные из чисел каждой строки исходного файла - C++
В текстовом файле input.txt содержится несколько строк , в каждой из которых имеются символы-цифры. Записать в файл output.txt построчно...

Считать граф из файла (граф задан матрицей) представить его в виде списка и записать список заново в файл - C++
помогите очень срочно надо. считать граф из файла (граф задан матрицей) представить его в виде списка и записать список заново в файл ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.04.2014, 15:36
Ответ Создать тему
Опции темы

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