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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
pavel_830
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 4
#1

Создавать файлы с результатами, не превышающие заданного размера - C++

09.09.2012, 23:29. Просмотров 436. Ответов 4
Метки нет (Все метки)

Имеется цикл, результаты которого записываются в файл. Нужно создавать файлы с результатами, не превышающие заданного размера (500 КВ). Вот часть кода.

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
#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
 
void pro()
{
    char q[255]="test";
    char buffer [33];
 
int u=0, f;
if(f=500)
    {
        
        q[4]=0;
        itoa (u,buffer,10);
        strcat(q,buffer);
        strcat(q,".txt");
        ofstream out(q, ios::app);//последовательная запись
        out << TEST <<"\n";//запись результат 
        struct stat st_one;     //
        stat(q,&st_one);        // размер файла
        f= st_one.st_size/1024; //
    }else
{
    u++;
    }
 
       
 
 
system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2012, 23:29     Создавать файлы с результатами, не превышающие заданного размера
Посмотрите здесь:

C++ как с помощью консоля создавать txt файлы?
C++ Найти все натуральные числа, не превышающие заданного N, которые делятся на каждую из своих цифр.
C++ Можно ли с помощью ODBC создавать файлы dBase?
C++ из int в char или как итерационно создавать файлы
C++ Нарисовать квадрат заданного размера
Как создавать .h файлы? C++
C++ Быстрое создание бинарного файла заданного размера
Создать двумерный динамический массив заданного пользователем размера C++
C++ Как создавать файлы dat и вводить в них данные (при помощи fstream)?
Вывод квадрата из звездочек заданного размера C++
C++ В матрице заданного размера найти среднее арифметическое
Ввод чисел в массив, без заданного размера с клавиатуры C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OstapBender
583 / 521 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
09.09.2012, 23:49     Создавать файлы с результатами, не превышающие заданного размера #2
и чё это?
pavel_830
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 4
10.09.2012, 00:09  [ТС]     Создавать файлы с результатами, не превышающие заданного размера #3
Если создавать файлы так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <fstream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    char q[255]="test";
    char buffer [33];
    for(int i=0;i<10;i++)
    {
        q[4]=0;
        itoa (i,buffer,10);
        strcat(q,buffer);
        strcat(q,".txt");
        ofstream out(q);
        out<<"test";
    }
    system("pause");
    return 0;
}
то он создаст 10 файлов, а нужно по одному, занес информацию в 1 файл и если его размер превышает 500 КБ, создается второй. Вопрос - как?
novi4ok
550 / 503 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
10.09.2012, 00:21     Создавать файлы с результатами, не превышающие заданного размера #4
создай где-нибудь переменную и веди учет байтам, записанным в файл. как только увидишь, что очередная попытка записи приведет к превышению размера - закрывай файл, создавай новый, обнуляй счетчик и пошел дальше.
pavel_830
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 4
11.09.2012, 19:50  [ТС]     Создавать файлы с результатами, не превышающие заданного размера #5
Проблема все таже, теперь цикл создает файл, записывает в него данные curr пока размер файла не станет #define fsize 200 закрывает его, а затем создает новый j++. Но данные для записи равны первому вхождению в этот цикл, например curr=2, и пока for (int j=0; j<2; ) не завершит своей работы curr всегда=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
31
32
33
#define fsize 200 
using namespace std; 
 
void pro()
{
    char q[255]="test";
    char buffer [33];
 
    for (int j=0; j<2; )
        { 
            q[4]=0;
            itoa (j,buffer,10);
            strcat(q,buffer);
            strcat(q,".txt");
            
            //ofstream out(q, ios::app);
                        //out << curr <<"\n";//запись рез   
             fstream f;
             f.open(q, ios::app);
             f<<curr <<"\n";
             int d;
             struct stat st_one;
             stat(q,&st_one);
             d= st_one.st_size/1024;
 
          if (d>=fsize)
          {
              f.close();
              j++;
          }
 
         }
}
Yandex
Объявления
11.09.2012, 19:50     Создавать файлы с результатами, не превышающие заданного размера
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru