我是靠谱客的博主 悦耳树叶,最近开发中收集的这篇文章主要介绍随机文件生成器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

// WriteBigFile.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <windows.h>

#define WORDSINLINE 150 //每行字节数
#define NUMOFLINES  1000000  //行数

#define BIGFILENAME1 "..\BigFile1.dat"
#define BIGFILENAME2 "..\BigFile2.dat"

#ifdef _DEBUG
#define MOSHI "Debug模式下"
#else
#define MOSHI "Release模式下"
#endif

#define Conn(x,y) x ## y
#define ToChar(x) #@ x
#define ToStr(x) # x

int main(int argc, char* argv[])
{
    /*
    这个工程的主要用途是产生一个很大的文件:
    一行150个字节 --- 前六位代表行号 + "--" +随机字母
    1,000,000行
    1000*1000*150/1024*1024 = 大约143兆
    */
    srand( (unsigned)time( NULL ) );//与时间相关的随机种子

    //创建文件
    if (GetFileAttributes(BIGFILENAME1) != -1)
    {
        if (!DeleteFile(BIGFILENAME1))
        {
            printf("文件1已存在,删除失败n");
            return 1;
        }
    }
    if (GetFileAttributes(BIGFILENAME2) != -1)
    {
        if (!DeleteFile(BIGFILENAME2))
        {
            printf("文件2已存在,删除失败n");
            return 1;
        }
    }

    FILE * pBigFile1 = fopen(BIGFILENAME1,"ab+");
    if (pBigFile1 == NULL)
    {
        return 1;
    }
    FILE * pBigFile2 = fopen(BIGFILENAME2,"ab+");
    if (pBigFile2 == NULL)
    {
        return 1;
    }


    //写文件
    int randNum;
    char basicChar = 'a';
    char randChar;
    char string[WORDSINLINE+2];
    memset(string,0,WORDSINLINE+2);

    clock_t time1 = clock();//测量时间
    for (int i=0; i<NUMOFLINES; i++)
    {
        for (int j=10; j<WORDSINLINE-2; j++)//从第11个字节开始随机赋值
        {
            randNum = rand()%25;//随机产生0-25之间的数字
            randChar = (char)(basicChar+randNum);
            string[j]=randChar;
        }
        string[0]= ToChar(1);
        string[1]=(char)('0'+(i/100000)%10 );
        string[2]=(char)('0'+(i/10000)%10 );
        string[3]=(char)('0'+(i/1000)%10 );
        string[4]=(char)('0'+(i/100)%10 );
        string[5]=(char)('0'+(i/10)%10 );
        string[6]=(char)('0'+(i/1)%10 );
        string[7]='-';
        string[8]='-';
        string[9]='-';


        string[WORDSINLINE-2]='r';
        string[WORDSINLINE-1]='n';
        fwrite(string,sizeof(char),WORDSINLINE,pBigFile1);
    }
    for (i=0; i<NUMOFLINES; i++)
    {
        for (int j=10; j<WORDSINLINE-2; j++)//从第11个字节开始随机赋值
        {
            randNum = rand()%25;//随机产生0-25之间的数字
            randChar = (char)(basicChar+randNum);
            string[j]=randChar;
        }
        string[0]= ToChar(2);
        string[1]=(char)('0'+(i/100000)%10 );
        string[2]=(char)('0'+(i/10000)%10 );
        string[3]=(char)('0'+(i/1000)%10 );
        string[4]=(char)('0'+(i/100)%10 );
        string[5]=(char)('0'+(i/10)%10 );
        string[6]=(char)('0'+(i/1)%10 );
        string[7]='-';
        string[8]='-';
        string[9]='-';
        
        
        string[WORDSINLINE-2]='r';
        string[WORDSINLINE-1]='n';
        fwrite(string,sizeof(char),WORDSINLINE,pBigFile2);
    }

    clock_t time2 = clock();
    clock_t take = time2-time1;

    printf("%s--生成两个%d行的文件花费时间为: %d(毫秒)n",MOSHI,NUMOFLINES,take);
    /*
    经验与总结:写文件的操作在Debug和Release下相差不大。
    */

    fclose(pBigFile1);
    fclose(pBigFile2);
    pBigFile1 = NULL;
    pBigFile2 = NULL;
    return 0;
}

最后

以上就是悦耳树叶为你收集整理的随机文件生成器的全部内容,希望文章能够帮你解决随机文件生成器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部