曲径通幽论坛

标题: 产生固定长度记录工具 [打印本页]

作者: beyes    时间: 2011-9-11 11:51
标题: 产生固定长度记录工具
以下代码可以生成固定长度记录文本,程序本身用处不大。产生文本的效果如下:
f4fc4769. Record Number: 00000000.abcdefghijklmnopqrstuvwxyz x
116295ee. Record Number: 00000001.abcdefghijklmnopqrstuvwxyz x
d4bc8a8f. Record Number: 00000002.abcdefghijklmnopqrstuvwxyz x
8018c11c. Record Number: 00000003.abcdefghijklmnopqrstuvwxyz x
8d08f125. Record Number: 00000004.abcdefghijklmnopqrstuvwxyz x
ade622fa. Record Number: 00000005.abcdefghijklmnopqrstuvwxyz x
b10140ab. Record Number: 00000006.abcdefghijklmnopqrstuvwxyz x
2e7ed308. Record Number: 00000007.abcdefghijklmnopqrstuvwxyz x
b07c7aa1. Record Number: 00000008.abcdefghijklmnopqrstuvwxyz x
cbe374c6. Record Number: 00000009.abcdefghijklmnopqrstuvwxyz x
在命令行中科指定产生上面格式记录的条数,以及生成的文件名。

代码
[C++] 纯文本查看 复制代码

#include "stdafx.h"
#define CR 0x0D
#define LF 0x0A

static VOID srandx (DWORD);   
static DWORD randx (void);   

int _tmain(int argc, LPTSTR argv[])
{


    DWORD nRec, i;
    FILE *fp;
    DWORD iR;
    FILETIME fileTime;    /* Times to seed random #s. */
    SYSTEMTIME sysTime;
    TCHAR buffer [256];

    if (argc < 3)
        _ftprintf(stderr, _T("Uasge: randfile nrec file."));

    nRec = _ttoi (argv [1]);    /* atoi()的通用版本 */
   
    if (_tfopen_s (&fp, argv [2], _T("wb")) != 0)            /*文件流指针直接返回到第 1 个参数中*/
        _ftprintf(stderr, _T ("Failed opening output."));

    GetSystemTime (&sysTime);        /* 获取系统时间(UTC)*/

    SystemTimeToFileTime (&sysTime, &fileTime);        /*系统时间转文件时间*/

    srandx (fileTime.dwLowDateTime);    /*取文件时间结构中的 dwLowDateTime 成员做种子*/

    for (i = 0; i < nRec; i++) {
        iR = randx();
                /*sprintf()会自动填'\0'到末尾,*/
        _stprintf_s (buffer, sizeof(buffer)/2, _T("%08x. Record Number: %08d.abcdefghijklmnopqrstuvwxyz x"), iR, i);        
   
       buffer[62] = CR;     /*回车*/
       buffer[63] = LF;     /*换行*/

        fwrite (buffer, 64, sizeof(TCHAR), fp);
    }

    fclose(fp);
    return 0;
}

static DWORD next = 1;

/* 自定义的 srand() 和 rand() 函数 */
DWORD randx (VOID)
{
    next = next * 1103515245 + 12345;
    return next;
}

VOID srandx (DWORD seed)
{
    next = seed;
    return;
}





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2