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

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

Войти
Регистрация
Восстановить пароль
 
dezdimon
7 / 7 / 0
Регистрация: 26.10.2010
Сообщений: 57
#1

Нужно создать большой файл - C++

17.03.2012, 16:58. Просмотров 916. Ответов 17
Метки нет (Все метки)

Нужно создать файл размером 1 Мб из 1 и 0.
Нужно чтобы у каждого 0 и 1 был свой номер.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    FILE *PVPFILE;
    PVPFILE = fopen("d:\\pvp.txt", "w+");
 
    int colvoch; 
    cout<< "Vvedite dlinu dlya slych. posledovatelnosti v kbaitax" << endl;
    cin >> colvoch;
    colvoch = colvoch*1024; 
 
    unsigned long int pvpin; 
    int i;
 
    for( i=0; i<colvoch; i++ )
    { pvpin[i] = rand() % 2;
      fprintf( PVPFILE, "%d", pvpin[i]); 
    }
    fclose(PVPFILE);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2012, 16:58     Нужно создать большой файл
Посмотрите здесь:

Нужно создать файл в который записать столбиком цифры от 1 до n - C++
Создать файл в который записать столбиком цифры от 1 до n

Нужно создать новый вектор и сохранить его в файл - C++
Добрый день Нужно создать вектор, занести туда некоторые значения и сохранить их в файл. Вот, что я сделал vector &lt;string&gt;...

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

Не большой опрос Нужно ли изучать С++ - C++
Мне интересно пригодится ли в дальнейшем С++ что можно делать с помощью данного языка программирования??Или его можно изучить на базовом...

Не большой код, нужно написать коментарии хотябы на главные строчки! - C++
string fixErrors(string encfile) { int doh = 0; int sindromeOneOriginal; int sindromeTwoOriginal; int...

Дали курсач,создать морской бой. Нужно создать функцию - C++
Нужна функция с помощью которой можно размещать 1местные корабли #include &lt;iostream&gt; #include&lt;conio.h&gt; using namespace std; ...

нужно функцию с параметром создать - C++
нужно функцию с параметром создать. глобальные переменные передавать как эти параметры, чтоб разбить функции на модули

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Байт
Эксперт C
15830 / 10157 / 1522
Регистрация: 24.12.2010
Сообщений: 19,142
17.03.2012, 17:21     Нужно создать большой файл #2
Цитата Сообщение от dezdimon Посмотреть сообщение
C
1
2
3
4
5
6
unsigned long int pvpin; 
* * * * int i;
for( i=0; i<colvoch; i++ )
* * * * { pvpin[i] = rand() % 2;
* * * * * fprintf( PVPFILE, "%d", pvpin[i]); 
* * * * }
Что может подумать транслятор, увидев pvpin[i] ?
cactus09
Чайник
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
17.03.2012, 18:02     Нужно создать большой файл #3
dezdimon, Что ты имеещ ввиду что каждый 0 и 1 должен иметь свой номер?

Добавлено через 3 минуты
Вот забацал код - водищ кол-во (биты) и он делает файл, но что значит "Нужно чтобы у каждого 0 и 1 был свой номер"?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
  int colvoch, i;
  FILE *PVPFILE;
  PVPFILE = fopen("d:\\pvp.txt", "w+");
  cin>>colvoch;
  
  for(int i=0;i<colvoch;i++){
  if(i%2==0){
  fprintf( PVPFILE, "0");}
   else {
   fprintf( PVPFILE, "1");}
   }
  
  fclose(PVPFILE);
  system("\nPAUSE");    
  return 0;
}
dezdimon
7 / 7 / 0
Регистрация: 26.10.2010
Сообщений: 57
17.03.2012, 18:16  [ТС]     Нужно создать большой файл #4
Мне потом нужно из этого файла доставать 7, 32 бит и т.к.

Добавлено через 12 минут
Ну к примеру единицу под 32 и нолик под номером 5...
cactus09
Чайник
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
17.03.2012, 18:22     Нужно создать большой файл #5
dezdimon, Понятно, сча чонибуть придумаем
dezdimon
7 / 7 / 0
Регистрация: 26.10.2010
Сообщений: 57
17.03.2012, 18:28  [ТС]     Нужно создать большой файл #6
Я думаю что нужно работать с массивами, но когда я создаю массив из 1000000 чисел, то программа прерывается

Добавлено через 1 минуту
Так работает, но с маленьким количеством чисел... А нужно много
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
// OIB.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
 
using namespace std; 
 
int main()
{
    FILE *PVPFILE;
    PVPFILE = fopen("d:\\pvp.txt", "w+");
 
    /*------Генерация ПВП---------*/
 
    int colvoch; 
    cout<< "Vvedite dlinu dlya slych. posledovatelnosti v kbaitax" << endl;
    cin >> colvoch;
    colvoch = colvoch*1024; 
 
    unsigned long int pvpin[1000000]; 
    unsigned long int i;
 
    for( i=0; i<colvoch; i++ )
    { pvpin[i] = rand() % 2;
      fprintf( PVPFILE, "%d", pvpin[i]); 
    }
    /*------------------------*/
 
    
 
    fclose(PVPFILE);
    return 0;
}
cactus09
Чайник
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
17.03.2012, 18:31     Нужно создать большой файл #7
Попробуй такой код (тока у меня выдает неизвестную ошибку может у тя получится)
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
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
  int colvoch, i,bitintxt;
  FILE *PVPFILE;
  PVPFILE = fopen("d:\\pvp.txt", "w+");
  cin>>colvoch;
  
  for(int i=0;i<colvoch;i++){
  if(i%2==0){
  fprintf( PVPFILE, "0");}
   else {
   fprintf( PVPFILE, "1");}
   }
  fclose(PVPFILE);
  
  FILE *PVPFILE1;
  PVPFILE1 = fopen("d:\\pvp.txt", "r");
  cin>>bitintxt; //ГЌГіГ¦Г*ûé ГЎГЁГІ
  char chintxt[colvoch+1]; //ГЊГ*Г±Г±ГЁГў Г± ñèìâîëГ*ìè ГЁГ§ txt
  for(int i=0;i<colvoch+1;i++){
  chintxt[i]=getc(PVPFILE1);
  fclose(PVPFILE1);
  cout<<chintxt[bitintxt];
  
  system("\nPAUSE");    
  return 0;
}
dezdimon
7 / 7 / 0
Регистрация: 26.10.2010
Сообщений: 57
17.03.2012, 18:43  [ТС]     Нужно создать большой файл #8
ничего...
cactus09
Чайник
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
17.03.2012, 18:48     Нужно создать большой файл #9
Все переделал - теперь работает
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
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
 
 
using namespace std;
 
int main(int argc, char *argv[])
{
  int colvoch,bitintxt;
  FILE *PVPFILE;
  PVPFILE = fopen("d:\\pvp.txt", "w+");
  cin>>colvoch;
  
  for(int i=0;i<colvoch;i++){
  if(i%2==0){
  fprintf( PVPFILE, "0");}
   else {
   fprintf( PVPFILE, "1");}
   }
  fclose(PVPFILE);
  
  FILE *PVPFILE1;
  PVPFILE1 = fopen("d:\\pvp.txt", "r");
  int getc(FILE *PVPFILE1);
  cin>>bitintxt; //ГЌГіГ¦Г*ûé ГЎГЁГІ
  char chintxt[colvoch+1]; //ГЊГ*Г±Г±ГЁГў Г± ñèìâîëГ*ìè ГЁГ§ txt
  for(int i=0;i<(colvoch+1) && chintxt[i]!=EOF;i++){
  chintxt[i]=fgetc(PVPFILE1);}
  fclose(PVPFILE1);
  cout<<chintxt[bitintxt];
  
  system("\nPAUSE");    
  return 0;
}
Добавлено через 44 секунды
Я там забыл у for поставить } вот он и к фор припися } main

Добавлено через 2 минуты
Один минус - он начинает считать с 0
dezdimon
7 / 7 / 0
Регистрация: 26.10.2010
Сообщений: 57
17.03.2012, 18:48  [ТС]     Нужно создать большой файл #10
Ругается на строчку:
C++
1
char chintxt[colvoch+1]; //Массив с символами из txt
cactus09
Чайник
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
17.03.2012, 18:55     Нужно создать большой файл #11
Но можно переделать 28 строчку на
C++
1
for(int i=1;i<(colvoch+2) && chintxt[i]!=EOF;i++){
и тогда все гуд

Добавлено через 5 минут
Цитата Сообщение от dezdimon Посмотреть сообщение
Ругается на строчку:
C++
1
char chintxt[colvoch+1]; //Массив с символами из txt
А ты чем пользуешся Visual Studio?
dezdimon
7 / 7 / 0
Регистрация: 26.10.2010
Сообщений: 57
17.03.2012, 18:58  [ТС]     Нужно создать большой файл #12
Да, Visual Studio.
Переделал ту строчку не помогло!
cactus09
Чайник
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
17.03.2012, 19:05     Нужно создать большой файл #13
А у тебя вообше не работает или ты водиш и он вылетает с ошибкой?
P.S. Я использую Dev-C++ и все работает
cactus09
Чайник
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
17.03.2012, 19:14     Нужно создать большой файл #14
Вот - все работает!
Миниатюры
Нужно создать большой файл  
cactus09
Чайник
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
17.03.2012, 19:28     Нужно создать большой файл #15
Чуть облагородил код, может теперь получится
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
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
 
 
using namespace std;
 
int main(int argc, char *argv[])
 
{
  setlocale( LC_ALL,"" ); //Вывод на русском языке
 
  int colvoch,bitintxt; // colvoch - объем файла, bitintxt - номер бита который будет показывать символ
  FILE *PVPFILE;
  PVPFILE = fopen("d:\\pvp.txt", "w+");
  cout<<"Введите обьем файла (в битах) ";
  cin>>colvoch; 
  
  for(int i=0;i<colvoch;i++){
  if(i%2==0){
  fprintf( PVPFILE, "0");}
   else {
   fprintf( PVPFILE, "1");}
   }
  fclose(PVPFILE); 
  
  FILE *PVPFILE1; 
  PVPFILE1 = fopen("d:\\pvp.txt", "r"); // снова открываем файл но уже только на чтение ("r")
  cout<<"Введите нужный по счету бит ";
  cin>>bitintxt; //Нужный бит
  char chintxt[colvoch+1]; //Массив с символами из pvp.txt
  for(int i=1;i<(colvoch+2) && chintxt[i]!=EOF;i++){
  chintxt[i]=fgetc(PVPFILE1);}
  fclose(PVPFILE1);
  cout<<"Символ "<<chintxt[bitintxt]<<" в "<<bitintxt<<"ом бите."<<endl;
  
  system("PAUSE");  
  return 0;
}
Хотя вряд ли, пищи пока на Dev-C++
Whiteha
Программист
33 / 33 / 4
Регистрация: 08.07.2011
Сообщений: 190
Записей в блоге: 1
17.03.2012, 20:44     Нужно создать большой файл #16
C++
1
2
3
cin>>colvoch;
...
 char chintxt[colvoch+1]; //Массив с символами из pvp.txt
Это вообще как такое работает?

Потенциальная ошибка, так можно выделять память только в том случае, если выражение [colvoch+1] вычислимо на стадии компиляции, для динамического выделения в си malloc(), calloc() в c++ new;
cactus09
Чайник
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
17.03.2012, 21:01     Нужно создать большой файл #17
Whiteha, Dev-C++ позволяет. По вашему должно быть так
C++
1
2
3
4
cin>>colvoch;
...
 char chintxt[1]; //Массив с символами из pvp.txt
 char *chintxt = new char[colvoch+1];
Ну прощу прощения - не по злобе душевной, по недоумию , сам еще новичок.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2012, 21:22     Нужно создать большой файл
Еще ссылки по теме:

нужно создать программку. массивы - C++
Инициализировать нецелочисленный массив 5х5 данными от -3 до -1; Вычислить произведение элементов каждой диагонали массива. Записать...

Нужно прочитать файл - C++
Всем доброговременисуток!Хочу сделать что нибудь на опене или дыретыХе со своей моделью.Нужно из файла 3ds max'а прочитать список вершин.Но...

Нужно из строк матрицы создать вектора! - C++
Предположем что у меня есть двухмерный масив с размерами n , m Мне нужно чтобы в отдельные N вектора перепи́сывались все линий...

Нужно создать класс С,наследующий классы A и B - C++
class A { int x; int a; A() { x=1; } } class B

Нужно создать самый простой класс (С++) - C++
Самый обыкновенный класс, любой.


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

Или воспользуйтесь поиском по форуму:
retmas
Жарю без масла
859 / 741 / 164
Регистрация: 13.01.2012
Сообщений: 1,694
17.03.2012, 21:22     Нужно создать большой файл #18
Цитата Сообщение от cactus09 Посмотреть сообщение
Whiteha, Dev-C++ позволяет.
не Dev-C++ позволяет, а компилятор gcc, воспринимая это выражение как массив переменного размера (из стандарта С99). не все компиляторы это поддерживают.
Yandex
Объявления
17.03.2012, 21:22     Нужно создать большой файл
Ответ Создать тему
Опции темы

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