Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
Вопрос по работе с файлами в с++ |

10.01.2007, 23:03
|
|
Постоянный
Регистрация: 05.07.2006
Сообщений: 458
Провел на форуме: 2943499
Репутация:
807
|
|
Вопрос по работе с файлами в с++
Дан файл вида:
слово1
слово2
слово3
и тд
Необходимо написать программу, которая берет каждое слово из файла и соединяет с другим словом, например «тест:», и выводит в файл результат:
тест:слово1
тест:слово2
тест:слово3
Сам мучился но ничего не вышло(((
вот мой исходник(нерабочий, создан для 2 строчек в файле) поправьте что не так, или напишите свой вариант решения данной задачи(под ДОС, не на визуале!!!).
Код:
#include <iostream.h>
#include <fstream.h>
#include <string.h>
void main()
{
ofstream book_file("123.txt");
ifstream input_file("123.txt");
char one[64], two[64], stroka1 [128];
input_file.getline(one, sizeof(one)) ;
input_file.getline(two, sizeof(two));
cout << one << endl;
cout << two << endl;
cout<<"vvedite slovo: ";
cin.getline(stroka1,64);
book_file<< strcat(stroka1 ,one)<<strcat(stroka1 ,two);
}
|
|
|

10.01.2007, 23:32
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
ну добавь в свой исходник цикл и всё..
|
|
|

11.01.2007, 00:25
|
|
Members of Antichat - Level 5
Регистрация: 05.04.2006
Сообщений: 1,066
Провел на форуме: 3493315
Репутация:
1228
|
|
через fgets() сделай все просто...
Последний раз редактировалось nc.STRIEM; 11.01.2007 в 00:35..
|
|
|

11.01.2007, 00:41
|
|
Постоянный
Регистрация: 05.07.2006
Сообщений: 458
Провел на форуме: 2943499
Репутация:
807
|
|
Мой код неработает, я знаю что нужно сделать цикл чтоб было для всех строк, но код неправельный.
2 nc.STRIEM
Я не силен в си, мож ты напишешь пример или кто-нибудь хотябы))
Последний раз редактировалось freddi; 11.01.2007 в 01:07..
|
|
|

11.01.2007, 01:42
|
|
Участник форума
Регистрация: 04.11.2006
Сообщений: 150
Провел на форуме: 1174659
Репутация:
175
|
|
Код:
#include <string>
#include <vector>
#include <fstream>
#include <sstream>
#include <functional>
#include <algorithm>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<std::string> buf;
{
std::ifstream f("123.txt");
std::copy(std::istream_iterator<std::string>(f),std::istream_iterator<std::string>(),std::back_inserter(buf));
}
std::ofstream f("123.txt");
std::transform(buf.begin(),buf.end(),
std::ostream_iterator<std::string>(f, "\n"),
std::bind1st(std::plus<std::string>(), "тест:")
);
return 0;
}
Последний раз редактировалось sni4ok; 11.01.2007 в 01:45..
|
|
|

11.01.2007, 21:47
|
|
Постоянный
Регистрация: 05.07.2006
Сообщений: 458
Провел на форуме: 2943499
Репутация:
807
|
|
2 sni4ok
1) Неработает)))
2) Мне кажется можно сделать гараздо проще. Ты там слишком все накрутил по-моему.
|
|
|

11.01.2007, 21:52
|
|
Участник форума
Регистрация: 04.11.2006
Сообщений: 150
Провел на форуме: 1174659
Репутация:
175
|
|
Сообщение от freddi
2 sni4ok
1) Неработает)))
2) Мне кажется можно сделать гараздо проще. Ты там слишком все накрутил по-моему.
всё работает, обьясняю по пунктам
создай файл 123.txt, напиши в него
слово1
слово2
слово3
сохрани, закрой, проверь что запускаешь из тойже дириктории(можешь кстати пути на жёсткую ссылку сделать, типа c:\123.txt, вообщем запускаешь эту бадягу, после выполнения в том же файле будет следующее:
тест:слово1
тест:слово2
тест:слово3
к вопросу насчёт того что накрутил- ты не прав, у меня вызывается 2 стандартных алгоритма.. куда может быть проще?
|
|
|

11.01.2007, 22:18
|
|
Постоянный
Регистрация: 05.07.2006
Сообщений: 458
Провел на форуме: 2943499
Репутация:
807
|
|
Компилю я в Borland C++ и он мне выдает 7 ошибок:
6 из которых ссылаются на то что не может открыть инклудовские файлы и еще ошибка в
using namespace std;
|
|
|

11.01.2007, 22:34
|
|
Участник форума
Регистрация: 04.11.2006
Сообщений: 150
Провел на форуме: 1174659
Репутация:
175
|
|
Сообщение от freddi
Компилю я в Borland C++ и он мне выдает 7 ошибок:
6 из которых ссылаются на то что не может открыть инклудовские файлы и еще ошибка в
using namespace std;
ну значит компилятор у тя древний, поставь последнюю версию...
кто же виноват, что у тя компилятор самые основные вещи не поддерживает?
з.ы - единственное место в приведённом коде не соотвествующие стандарту- это название функции для точки входа, если её заменить например на
int main(int, char**), то приведённый код будет 100% коретным в любом плюсовом компиляторе, поддерживающим хотябы стандарт 98 года.
|
|
|

11.01.2007, 23:00
|
|
Постоянный
Регистрация: 05.07.2006
Сообщений: 458
Провел на форуме: 2943499
Репутация:
807
|
|
Сообщение от sni4ok
ну значит компилятор у тя древний, поставь последнюю версию...
кто же виноват, что у тя компилятор самые основные вещи не поддерживает?
Нда уж....
От компилятора здесь ничего не зависит.
Вопрос остался открытым.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|