Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/47: Рейтинг темы: голосов - 47, средняя оценка - 4.55
0 / 0 / 1
Регистрация: 04.04.2014
Сообщений: 10

Передача ofstream в функцию

04.04.2014, 13:59. Показов 9566. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Подскажите, пожалуйста, как сделать из участка с 54 по 62 строку отдельную функцию (также с 64 по 73, с 75 по 85, с 87 по 96). Спасибо!

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
using namespace std;
 
 int main()
 {
     SetConsoleCP(1251);
     SetConsoleOutputCP(1251);
 
 char word[256];
 
  const int N5 = 3;
     char* arr5[N5] = {
     "goto",
     "setjmp",
     "longjmp"};
 
    int count=0;
    int i;
    int j;
 
    char filename[256];
 
    printf("Введите имя файла ");
    scanf("%s",&filename);
    ifstream wer(filename);
    if(!wer.is_open())
    {
        printf("Ошибка!\n");
        _getch();
        return -1;
    }
 
    while(!wer.eof())
    {
        wer.getline(word, 256);
        count++;
    }
    wer.close();
 
    ifstream wer2(filename);
    char ** dict=new char*[count];
    for(i=0;i<count;i++)
    {
        dict[i]=new char[256];
        wer2.getline(dict[i],256);
 
    }
    //delete [] dict;
    wer2.close();
 
               
    ofstream outFile;
    outFile.open ("Error.txt");
  
  outFile << "*******************************************************************" << "\n\n";
 for(i=0;i<count;i++)
  {
        if(strstr(dict[i],"{"))
          if((!(strstr(dict[i],"/"))) && (!(strstr(dict[i],"\\"))) && (!(strstr(dict[i],"="))))
        {
           outFile << "  " << i + 1 << " " << dict[i] << "\n";
        }
  }
 
  outFile << "\n";
  outFile << "*******************************************************************" << "\n\n";
 for(i=0;i<count;i++)
  {
     for(j = 0; j < N5; j++)
        if(strstr(dict[i],arr5[j]))
        {
           outFile << "  " << i + 1 << " " << dict[i] << "\n";
        }
  }
 
  outFile << "\n";
  outFile << "*******************************************************************" << "\n\n";
  char second[] = "{}();", *p;
  for(i=0;i<count;i++)
  {
    for (p = dict[i]; *p; ++p)
      if (strchr(second, *p))
        {
           outFile << "  " << i + 1 << " " << dict[i] << "\n"; 
        }
  }
 
  outFile << "\n"; 
  outFile << "*******************************************************************" << "\n\n";
 for(i=0;i<count;i++)
  {
        if(strstr(dict[i],"***"))
          if((!(strstr(dict[i],"/*"))) && (!(strstr(dict[i],"*/"))) && (!(strstr(dict[i],"//"))))
        {
           outFile << "  " << i + 1 << " " << dict[i] << "\n";
        }
  }
 
   outFile.close(); 
 
  system("pause");
 return 0;
 }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.04.2014, 13:59
Ответы с готовыми решениями:

Ofstream в структуре и передача этой структуры по функциям
Добрый день. Задача следующая: есть структура, в данном случае - Ofstr. В ней *stream - поток на вывод. Путь передается в функцию...

Передача массива в функцию используя указатель на функцию
У меня имеется готовая программа без передачи функции в функцию указателем, мне нужно передать функцию ввода масива в функцию его обработки...

Передача объекта в функцию или функцию друга
Здравствуйте, уважаемые программисты :) К примеру есть такой код. #include &lt;iostream&gt; using namespace std; class My_Class1 { ...

7
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
04.04.2014, 14:22
Лучший ответ Сообщение было отмечено Annnettttt как решение

Решение

Логичней передача не потока, а имени файла, с которым нужно работать.
Как-то так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void DataOut (char *filename, .......)
{   ofstream outFile (filename);
    //....
 
    outFile.close();
}   
 
int main ()
{ //...
    char filename[256];
    fgets (filename, 256, stdin);
    if (filename [strlen(filename)-1] == '\n')
        filename [strlen(filename)-1] == '\0'
 
    void DataOut (filename, ......);
 
    
 //...
}
P.S. scanf для строки - не есть гуд.
2
 Аватар для don_keyhot
8 / 8 / 6
Регистрация: 02.04.2014
Сообщений: 62
04.04.2014, 14:59
Лучший ответ Сообщение было отмечено Annnettttt как решение

Решение

Annnettttt,
как-то так
вот сама функция:
C++
1
2
3
4
5
6
7
8
9
10
11
12
void write_out(ofstream &outFile, char **dict, int count)
{
    outFile << "*******************************************************************" << "\n\n";
    for (int i = 0; i < count; i++)
    {
        if (strstr(dict[i], "{"))
            if ((!(strstr(dict[i], "/"))) && (!(strstr(dict[i], "\\"))) && (!(strstr(dict[i], "="))))
            {
                outFile << "  " << i + 1 << " " << dict[i] << "\n";
            }
    }
}
а вот ее вызов из программы
C++
1
write_out(outFile, dict, count);
Добавлено через 3 минуты
IrineK, нет, Вы не правы в данном случае
там из программы к этой функции идет много вызовов, и если каждый раз в функции дергать поток, открывать, закрывать то это НЕ правильно.
1
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
04.04.2014, 15:06
Цитата Сообщение от don_keyhot Посмотреть сообщение
идет много вызовов
Вы одновременно будете дергать поток этими вызовами или по очереди?
Если по очереди - значит все укладывается в один логический модуль.

Если не укладывается - что-то не так с логикой у того, кто кодил. )
0
 Аватар для don_keyhot
8 / 8 / 6
Регистрация: 02.04.2014
Сообщений: 62
04.04.2014, 15:15
IrineK,
Цитата Сообщение от IrineK Посмотреть сообщение
Вы одновременно будете дергать поток этими вызовами или по очереди?
Если по очереди - значит все укладывается в один логический модуль.
Если не укладывается - что-то не так с логикой у того, кто кодил. )
согласен с Вами )
в программе нужно конечно нужно переносить в функцию гораздо больше строк, чем указано в условии, но я честно ответил: только на заданный вопрос, ничего лишнего, дабы не запутать новичка деталями которые ему пока не нужны )

Добавлено через 1 минуту
но я думаю она и сама догадается
0
0 / 0 / 1
Регистрация: 04.04.2014
Сообщений: 10
05.04.2014, 13:07  [ТС]
Спасибо за помощь. Если позволите, еще вопрос.
А что бы Вы использовали вместо scanf для строки?
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
05.04.2014, 13:10
См. пример
Цитата Сообщение от IrineK Посмотреть сообщение
fgets (filename, 256, stdin);
* * if (filename [strlen(filename)-1] == '\n')
* * * * filename [strlen(filename)-1] == '\0';
1
0 / 0 / 1
Регистрация: 04.04.2014
Сообщений: 10
05.04.2014, 13:18  [ТС]
Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.04.2014, 13:18
Помогаю со студенческими работами здесь

Передача указателя на шаблонную функцию в другую функцию
Пишу тест для нескольких улучшений квиксорта с измерением времени. Функция benchmark принимает итераторы для диапазона элементов, указатель...

Передача двухмерного массива из функцию в функцию
Допустим у меня есть функция, в которой &quot;генерируется&quot; массив. Но нужно его передать в другую функцию, которая его выведет на экран. ...

Передача в функцию
Правильно ли я передаю arg в функцию listInsert? Нет возможности проверить. Ниже структура и фунция встаки аргумента. double complex...

Передача в функцию
компилятор ругается на int sumcolumn (int **a, int n) sumcolumn(a,m) почему не могу передать массив i*1, таким образом? ...

Передача в функцию
вот есть такие строки кода: typedef vector&lt; vector&lt;char&gt; &gt; string_sound; void sound_func(string_sound &amp;text_sound, int sum_words)...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru