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

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

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

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

09.09.2012, 23:29. Просмотров 446. Ответов 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;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2012, 23:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создавать файлы с результатами, не превышающие заданного размера (C++):

Найти все натуральные числа, не превышающие заданного N, которые делятся на каждую из своих цифр. - C++
Найти все натуральные числа, не превышающие заданного N, которые делятся на каждую из своих цифр. Надо решить через функцию .Без массивов.

Дан массив F[0:n-1].Сформировать два новых массива: первый содержит элементы, не превышающие заданного числа, а второй - все остальные - C++
Помогите пожалуйста.Нужен полный текст программы, заранее благодарен

Как создавать .h файлы? - C++
как создавать .h файлы где найти книги, уроки

как с помощью консоля создавать txt файлы? - C++
Здравствуйте!Я новичек...я только только начинаю создовать проги... помогите пожалуйста с вопросом, я не могу написать код...

Можно ли с помощью ODBC создавать файлы dBase? - C++
Подскажите с чего начать,чтобы научится создавать файлы dBase. Можно ли с помощью ODBC это сделать?

из int в char или как итерационно создавать файлы - C++
Уважаемые форумчане, подскажите пожалуйста как реализовать следующую процедуру: В программе выполняется несколько итераций, на...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
OstapBender
583 / 521 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
09.09.2012, 23:49 #2
и чё это?
0
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 КБ, создается второй. Вопрос - как?
0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
10.09.2012, 00:21 #4
создай где-нибудь переменную и веди учет байтам, записанным в файл. как только увидишь, что очередная попытка записи приведет к превышению размера - закрывай файл, создавай новый, обнуляй счетчик и пошел дальше.
0
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++;
          }
 
         }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2012, 19:50
Привет! Вот еще темы с ответами:

Как создавать файлы dat и вводить в них данные (при помощи fstream)? - C++
как создавть файлы .dat и вводить в них данные

Нарисовать квадрат заданного размера - C++
Напишите программу, которая читает размер стороны квадрата и затем печатает звездочками и пробелами пустой квадрат заданного размера. Ваша...

Вывод квадрата из звездочек заданного размера - C++
Напишите программу, которая отображает у левого края экрана сплошной квадрат из звездочек, сторона которого указана целым параметром side.

Быстрое создание бинарного файла заданного размера - C++
Собственно, вопрос в теме. Как быстро выделить память под файл? Можно, конечно, методично записать в файл массив необходимого размера, но...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.09.2012, 19:50
Ответ Создать тему
Опции темы

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