曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3491|回复: 0
打印 上一主题 下一主题

产生固定长度记录工具

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2011-9-11 11:51:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以下代码可以生成固定长度记录文本,程序本身用处不大。产生文本的效果如下:
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;
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-18 04:18 , Processed in 0.066692 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表