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

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

Восстановить пароль Регистрация
 
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 401
03.04.2014, 22:30     Записать в перевернутом виде строки файла F в файл G #1
Здравствуйте. Не знаю, как заставить работать программу. Буду очень благодарен за помощь

Дан текстовый файл 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2014, 22:30     Записать в перевернутом виде строки файла F в файл G
Посмотрите здесь:

Считать граф из файла (граф задан матрицей) представить его в виде списка и записать список заново в файл C++
C++ Записать в выходной файл все строки входного файла
C++ Текстовый файл состоит из нескольких строк. Записать во второй файл последние символы из каждой строки первого файла
Текстовый файл содержит строки – предложения разной длины. Записать их в выходной файл в порядке возрастания длины строки C++
Текстовый файл содержит строки – предложения разной длины. Записать их в выходной файл в порядке возрастания длины строки C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newbie666
Заблокирован
03.04.2014, 22:48     Записать в перевернутом виде строки файла F в файл G #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;
}
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 401
03.04.2014, 23:02  [ТС]     Записать в перевернутом виде строки файла F в файл G #3
Спасибо большое, если не трудно напишите, пожалуйста, пару комментариев, а то боюсь не разбрерусь
newbie666
Заблокирован
03.04.2014, 23:10     Записать в перевернутом виде строки файла F в файл G #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;
}
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
03.04.2014, 23:30     Записать в перевернутом виде строки файла F в файл G #5
навскидку:
Цитата Сообщение от newbie666 Посмотреть сообщение
//вытаскиваем одну строку
* * * * fs >> tmp;
не строку, а слово.
Цитата Сообщение от newbie666 Посмотреть сообщение
for(auto it = fileStrings.rbegin(); it != fileStrings.rend(); it++)
* * * * fs << *it << std::endl;
Выведет слова, каждое с новой строки. А не строки в обратном порядке.
Хрень получится.

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

Не по теме:

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

avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 401
03.04.2014, 23:34  [ТС]     Записать в перевернутом виде строки файла F в файл G #6
А можно как-то поправить, что бы выводило строками?
newbie666
Заблокирован
03.04.2014, 23:38     Записать в перевернутом виде строки файла F в файл G #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 Посмотреть сообщение
Выведет слова, каждое с новой строки. А не строки в обратном порядке.
а тут вы ошибаетесь - всё будет тип топ
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
03.04.2014, 23:43     Записать в перевернутом виде строки файла F в файл G #8
Цитата Сообщение от newbie666 Посмотреть сообщение
а тут вы ошибаетесь - всё будет тип топ
Нифига тип-топ не будет. Сам подумай. У тебя слова в векторе. ты выводишь каждое слово и после него символ новой строки. И какой здесь тип-топ?
newbie666
Заблокирован
03.04.2014, 23:45     Записать в перевернутом виде строки файла F в файл G #9
Цитата Сообщение от Vourhey Посмотреть сообщение
У тебя слова в векторе
во втором варианте уже строки а не слова, так что всё будет тип топ - нц последний вариант посмотри. Не веришь - компильни .. ладно, я на боковую
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
04.04.2014, 00:03     Записать в перевернутом виде строки файла F в файл G #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
newbie666
Заблокирован
04.04.2014, 11:56     Записать в перевернутом виде строки файла F в файл G #11
Цитата Сообщение от Vourhey Посмотреть сообщение
Ну и мой вариант тогда уж...
а это ясен пень не работает
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
04.04.2014, 13:22     Записать в перевернутом виде строки файла F в файл G #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 должен быть обратным
идут в обратном порядке.
newbie666
Заблокирован
04.04.2014, 15:12     Записать в перевернутом виде строки файла F в файл G #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, сделай меня лучше админом тут

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

Добавлено через 40 секунд
Цитата Сообщение от newbie666 Посмотреть сообщение
Vourhey, сделай меня лучше админом тут
так что по поводу этого?
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
04.04.2014, 15:45     Записать в перевернутом виде строки файла F в файл G #16
Цитата Сообщение от newbie666 Посмотреть сообщение
это что ваще такое?
Кури ман.
Цитата Сообщение от newbie666 Посмотреть сообщение
Легко не легко - создал пустой консольный проект в VS2012, скопипастил туда твои строки и результат как и моим постов выше, может у тебя чудо компилятор ?
Не, это твоя кривая винда с кривыми файлами. Но проблемы твоих файлов меня не волнуют.
newbie666
Заблокирован
04.04.2014, 15:54     Записать в перевернутом виде строки файла F в файл G #17
Цитата Сообщение от Vourhey Посмотреть сообщение
Не, это твоя кривая винда с кривыми файлами. Но проблемы твоих файлов меня не волнуют.
В общем я человеку помог.
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
04.04.2014, 15:56     Записать в перевернутом виде строки файла F в файл G #18
Цитата Сообщение от newbie666 Посмотреть сообщение
В общем я человеку помог,
У тебя даже второй вариант правильно работать не будет, это и без компиляции ясно Но я уж не стал тебя расстраивать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2014, 14:49     Записать в перевернутом виде строки файла F в файл G
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
07.04.2014, 14:49     Записать в перевернутом виде строки файла F в файл G #19
newbie666, ну, и раз уж сегодня довелось столкнуться с виндой и Visual C++ (тьфу-тьфу), то пеняй на кривую стандартную библиотеку VC++, что она unget() не могет. Пользуешься всяким дерьмом... С кривыми vc++ вот так могет:
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(-1, std::ios::end);in;c=in.peek(),out<<c,in.seekg(-1, std::ios::cur));
    out.close(), in.close();
}
>type 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...
>type 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
Yandex
Объявления
07.04.2014, 14:49     Записать в перевернутом виде строки файла F в файл G
Ответ Создать тему
Опции темы

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