• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

потоки

  • Автор темы FieSta
  • Дата начала
F

FieSta

Всем привет, посеитившим эту тему. Очень сильно нужна ваша помощь в C++. Нужно написать программку(в ОС LINUX!!!), вроде как неочень сложную, но для меня это сущая бездна, потому как С++ непонимаю вобще..

Условие
Разработать консольную программу. Задача должна быть оформлена ввиде
функции, реализованной в файле myfunc.cpp и вызываемой из функции main,
которая расположена в файле laba3.cpp.
Задача:
Напишите программу, которая производит замену в вводном потоке всех
символов '\t' на 8-мь символов пробела и выводит результаты в выводной поток.
Потоки должны быть связаны с файлами на диске. Файл, содержащий
исходные данные должен открываться в режиме "только чтение".

Помогите пожалуйста. Действительно очень важно. У меня есть только сутки.
И просьба, к тем кто возможно откликнется - вставлять комментарии.
 
I

ierofant

myfunc.h
C++:
#ifndef _MY_FUNC_H_
#define _MY_FUNC_H_

void myfunc (const char *_in_file, const char *_out_file);

#endif //_MY_FUNC_H_

myfunc.cpp
C++:
#include "myfunc.h"
#include <fstream>

void myfunc (const char *_in_file, const char *_out_file)
{
std::ifstream in (_in_file);
std::ofstream out (_out_file);

while (in && out && in.good ())
{
char sym = in.get ();
if (in.good ()) 
if (sym != '\t') out.put (sym);
else for (int i = 0; i < 8; ++i) out.put (' ');
}
}

laba3.cpp
C++:
#include "myfunc.h"

int main ()
{
myfunc ("file1", "file2");
return 0;
}
Надеюсь скомпилить сам сможешь.
 
F

FieSta

Большое спасибо за программу, она рабочая, но есть проблема, как привести эту программу в действие? Я не шарю просто=) при обычном выполнении нечего непроисходит.. Я так поняла нужно создать 2 файла в одном записать какой-то текст с табуляциями, а во второй вывести результат с пробелами, но как это совместить с программой? обьясните пожалуйста на примере...потому как у меня нечего невыходит, я в этом чайник :(
 
I

ierofant

Плохое оправдание :( , надо переставать быть чайником. Эти файлы должны называться file1 и file2. В первом текст с табуляциями, во втором получишь результат, после выполнения программы. Файлы должны находится в одной папке с программой. Если нужны другие имена файлов, просто поменяй их названия в laba3.cpp.
 
F

FieSta

А полный путь к файлу указывать ненадо?
Плохое оправдание :( , надо переставать быть чайником.
та я бы с радостью, но для меня это сложный язык, точнее сложный для моего понимания..Хотя возможно мне его не так подали.. Паскаль и Delphi я лучше освоила
 
I

ierofant

А полный путь к файлу указывать ненадо?
Если он в одной папке с программой, то нет. Если в другом месте, то нужно. Вообще по-хорошему надо было сделать, чтобы имена фалов вводились с клавиатуры, но я не стал усложнять пример.

Добавлено: Вот так, например:
C++:
#include "myfunc.h"
#include <string>

int main ()
{
std::string filename1, filename2;
std::cout << "Введите имя файла с исходными данными: ", std::cin >> filename1;
std::cout << "Введите имя выходного файла: ", std::cin >> filename2;

myfunc (filename1.c_str (), filename2.c_str ());
return 0;
}
 
F

FieSta

мм, завтра попробую, если будут вопросы, то я могу к вам в аську обратиться, что бы тут не флудить?))
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!