Пытаюсь создать текстовый файл, и с помощью генератора случайных букв(+пробел, для того, чтобы получались "слова" разной длины) записывать в этот файл набор этих самых букв. По отдельности если делаю, то файл создается, буквы генерируются, а вместе это не получается сделать. Можете объяснить почему и наставить на путь истинный)
#include <cstdio>
#include <cstdlib>
#include <ctime>
int main ()
{
FILE * pFile;
int val = 15*1024*1024;
int i;
srand(time(NULL));
unsigned char mass;
for(i=0;i<30;++i)
mass=(rand() % ('z'-'a'+1))+'a';
pFile = fopen ( "myf.txt" , "w" );
fwrite (mass , 1 , sizeof(val) , pFile );
fclose (pFile);
}
И еще такой вопрос: Как все-таки можно заполнить файл случайными буквами с пробелом (чтобы получались "слова") на 10МБ?
Итак,
for(i=0;i<30;++i)
mass=(rand() % ('z'-'a'+1))+'a';
30 раз переприсваиваем значение одной и той же переменной (кстати, пробелом тут и не пахнет).
Затем пишем в файл 4 байта (размер int
)? находящиеся по адресу, который хранится в переменной mass
:
fwrite (mass , 1 , sizeof(val) , pFile );
Кстати, эта строка в C++ не компилируется, так что...
Наверное. вы хотели что-то вроде этого?
#include <cstdio>
#include <cstdlib>
#include <ctime>
int main ()
{
FILE * pFile;
pFile = fopen ( "myf.txt" , "w" );
int val = 15*1024*1024;
int i;
srand(time(NULL));
char mass;
for(i=0; i<val; ++i)
{
mass=(rand() % ('z'-'a'+2))+'a' - 1;
if (mass < 'a') mass = ' ';
fwrite (&mass , 1 , sizeof(mass) , pFile );
}
fclose (pFile);
}
Галочка успела появиться.. ну да ладно, зря что ли писал, вдруг тоже пригодится.
#include <ctime>
#include <fstream>
int main()
{
//Задаём диапазон количества символов в одном слове и количество символов в файле
const int minWordLength = 2,
maxWordLength = 30,
maxSymbolInFile = 10*1024*1024;
std::ofstream fout("out.txt");
srand(time(nullptr));
//определяем длину первого слова
int currentWordLength = minWordLength + rand() % (maxWordLength - minWordLength);
int symbolsInFile = 0;
while (symbolsInFile<maxSymbolInFile)
{
if (!currentWordLength)
{
//Если завершили формирования слова, то печатаем пробел и
fout << " ";
++symbolsInFile;
//определяем длину следующего слова
currentWordLength = minWordLength + rand() % (maxWordLength - minWordLength);
}
//Добавляем в текущее слово новый символ
fout << (char)((rand() % ('z' - 'a' + 1)) + 'a');
--currentWordLength;
++symbolsInFile;
}
fout.close();
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Хочу в этом switch, отловить title, process, process idУ меня есть 2 функции
Есть ли в крестах возможность инстанцировать шаблон типа
Всем приветСовсем недавно начал изучение плюсов (да и программирования в целом, до этого лишь немного писал на Python)
Здравствуйте я новенький в мире программирования c++вот решил устроится стажером в фирму