以下代码可以生成固定长度记录文本,程序本身用处不大。产生文本的效果如下: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;
} |