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

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

Восстановить пароль Регистрация
 
Annnettttt
0 / 0 / 0
Регистрация: 04.04.2014
Сообщений: 6
04.04.2014, 13:59     Передача ofstream в функцию #1
Здравствуйте. Подскажите, пожалуйста, как сделать из участка с 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;
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2014, 13:59     Передача ofstream в функцию
Посмотрите здесь:

передача в функцию C++
C++ Передача в функцию массива
Передача двухмерного массива из функцию в функцию C++
C++ Передача в функцию
C++ Передача char в функцию
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IrineK
Заблокирован
04.04.2014, 14:22     Передача ofstream в функцию #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Логичней передача не потока, а имени файла, с которым нужно работать.
Как-то так:

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 для строки - не есть гуд.
don_keyhot
 Аватар для don_keyhot
4 / 4 / 2
Регистрация: 02.04.2014
Сообщений: 60
04.04.2014, 14:59     Передача ofstream в функцию #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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, нет, Вы не правы в данном случае
там из программы к этой функции идет много вызовов, и если каждый раз в функции дергать поток, открывать, закрывать то это НЕ правильно.
IrineK
Заблокирован
04.04.2014, 15:06     Передача ofstream в функцию #4
Цитата Сообщение от don_keyhot Посмотреть сообщение
идет много вызовов
Вы одновременно будете дергать поток этими вызовами или по очереди?
Если по очереди - значит все укладывается в один логический модуль.

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

Добавлено через 1 минуту
но я думаю она и сама догадается
Annnettttt
0 / 0 / 0
Регистрация: 04.04.2014
Сообщений: 6
05.04.2014, 13:07  [ТС]     Передача ofstream в функцию #6
Спасибо за помощь. Если позволите, еще вопрос.
А что бы Вы использовали вместо scanf для строки?
IrineK
Заблокирован
05.04.2014, 13:10     Передача ofstream в функцию #7
См. пример
Цитата Сообщение от IrineK Посмотреть сообщение
fgets (filename, 256, stdin);
* * if (filename [strlen(filename)-1] == '\n')
* * * * filename [strlen(filename)-1] == '\0';
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2014, 13:18     Передача ofstream в функцию
Еще ссылки по теме:

Передача в функцию C++
C++ Передача объекта в функцию или функцию друга
C++ Ofstream в структуре и передача этой структуры по функциям

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

Или воспользуйтесь поиском по форуму:
Annnettttt
0 / 0 / 0
Регистрация: 04.04.2014
Сообщений: 6
05.04.2014, 13:18  [ТС]     Передача ofstream в функцию #8
Спасибо!
Yandex
Объявления
05.04.2014, 13:18     Передача ofstream в функцию
Ответ Создать тему
Опции темы

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