?? chardict.cpp
字號:
//#include"ghAw.h"
#include <STDIO.H>
#include <windows.h>
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
char FILE_NAME_TITLE[128]="f";
DWORD FILE_LENGTH = 6000000;
char titleChar[] = "\0";
DWORD maxRepeatNum = 1;
DWORD maxPartNumber = 4;
DWORD startEnd[][3] = {
{0,35,0}, //0
{0,35,0}, //1
{0,35,0}, //2
{0,35,0}, //3
{0,35,0}, //4
{0,35,0}, //5
{0,35,0}, //6
{15,15,0}, //7
{0,9,0}, //8
{0,9,0}, //9
{0,9,0}, //10
{0,9,0}, //11
};
BYTE numCharacter[10+26] = {
'0','1','2','3','4','5','6','7','8','9',
'a','b','c','d','e','f','g','h','i','j',
'k','l','m','n','o','p','q','r','s','t',
'u','v','w','x','y','z',
};
BYTE numCharacter2[10+26] = {
'0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F','G','H','I','J',
'K','L','M','N','O','P','Q','R','S','T',
'U','V','W','X','Y','Z',
};
DWORD readCount = 0;
DWORD fileCount = 0;
FILE *fpx = NULL;
char fileName[128] = {0};
DWORD fileLength = 0;
void WriteStringFile(BYTE *buffer, DWORD len)
{
if (fileLength >= FILE_LENGTH)
{
fileCount ++;
if (fpx)
fclose(fpx);
fpx = NULL;
fileLength = 0;
}
if (fpx == NULL)
{
int lenx;
int leny = strlen(FILE_NAME_TITLE);
strncpy(fileName, FILE_NAME_TITLE, leny);
lenx = leny;
fileName[leny++] = fileCount/10000 + '0';
fileName[leny++] = (fileCount%10000)/1000 + '0';
fileName[leny++] = (fileCount%1000)/100 + '0';
fileName[leny++] = (fileCount%100)/10 + '0';
fileName[leny++] = fileCount%10 + '0';
fileName[leny++] = '.';
fileName[leny++] = 't';
fileName[leny++] = 'x';
fileName[leny++] = 't';
fileName[leny++] = 0;
if (fileCount >= readCount)
{
fpx = fopen("count.txt", "wb");
if (fpx != NULL)
{
fwrite(&fileName[lenx],1,9,fpx);
fclose(fpx);
fpx = NULL;
}
fpx = fopen(fileName, "wb");
}
}
if (fpx)
{
DWORD x = fwrite(buffer,1,len,fpx);
if (x == 0)
{
fclose(fpx);
exit(1);
}
}
fileLength += len;
}
/////////////////////////
#define OK 1
#define FAIL 0
#define BUFFER_LENGTH 10000
unsigned char buffer[BUFFER_LENGTH];
int readLine(unsigned char *buffer, long int buflen, long int begin, long int *end);
int checkStringOK(unsigned char *buffer,const char *name);
int getName(unsigned char *buffer, long int begin, long int end, unsigned char *name);
int getData(unsigned char *buffer, long int begin, long int end, DWORD *data);
int getDatax(DWORD len, unsigned char *buffer, long int begin, long int end, DWORD *data);
void change(unsigned char *in,unsigned char *out);
void GetParam()
{
long int bufferLen = 0;
FILE *fp = fopen("charDict.ini", "rb");
if (fp != NULL)
{
bufferLen = fread(buffer,1,BUFFER_LENGTH,fp);
fclose(fp);
}
else
exit(1);
long int dataLen = 0;
long int BufBegin = 0;
long int BufEnd = 0;
while (BufEnd < bufferLen)
{
if (readLine(buffer,bufferLen, BufBegin, &BufEnd) == OK)
{
if (checkStringOK(&buffer[BufBegin],"filenameTitle") == OK)
{
getName(buffer,BufBegin,BufEnd,(unsigned char *)FILE_NAME_TITLE);
}
else if (checkStringOK(&buffer[BufBegin],"dataTitle") == OK)
{
getName(buffer,BufBegin,BufEnd,(unsigned char *)titleChar);
if ((titleChar[0] == '\\') && (titleChar[1] == '0'))
titleChar[0] = 0;
}
else if (checkStringOK(&buffer[BufBegin],"fileMaxLength") == OK)
getData(buffer,BufBegin,BufEnd,&FILE_LENGTH);
else if (checkStringOK(&buffer[BufBegin],"maxRepeatNumber") == OK)
getData(buffer,BufBegin,BufEnd,&maxRepeatNum);
else if (checkStringOK(&buffer[BufBegin],"maxPartNumber") == OK)
getData(buffer,BufBegin,BufEnd,&maxPartNumber);
else if (checkStringOK(&buffer[BufBegin],"startEnd") == OK)
getDatax(maxPartNumber, buffer,BufBegin,BufEnd,(DWORD *)startEnd);
BufBegin = BufEnd;
}
else
break;
}
readCount = 0;
fp = fopen("count.txt", "rb");
if (fp != NULL)
{
bufferLen = fread(buffer,1,10,fp);
fclose(fp);
for(int i = 0; i < 5; i ++)
readCount = (readCount * 10) + buffer[i] - '0';
}
}
int main(void)
{
DWORD i[12];
int j,k;
GetParam();
fileCount = 0;
int pos = strlen(titleChar);
if (pos > 0)
strncpy((char *)buffer, titleChar, pos);
if (maxPartNumber >= 12) return 0;
if (maxPartNumber < 1) return 0;
if (maxRepeatNum > 12) return 0;
if (maxRepeatNum < 1) return 0;
int posx;
int count[40];
bool run;
int numflag[12];
for(j = 0; j < 12; j ++)
numflag[j] = startEnd[j][3];
for(i[11] = startEnd[11][0]; i[11] <= startEnd[11][1]; i[11] ++)
{
if (maxPartNumber > 11)
{
posx = pos;
for(j = 0; j < (int)(startEnd[11][1] - startEnd[11][0] + 1); j ++)
count[j] = 0;
for(j = 0; j < ((int)maxPartNumber - 11); j ++)
{
k = maxPartNumber - j - 1;
if (numflag[11] == 0)
buffer[posx++] = numCharacter[i[k]];
else
buffer[posx++] = numCharacter2[i[k]];
count[i[k] - startEnd[11][0]] ++;
}
run = true;
for(j = 0; j < (int)(startEnd[11][1] - startEnd[11][0] + 1); j ++)
{
if (count[j] > (int)maxRepeatNum)
{
run = false;
break;
}
}
if (run)
{
buffer[posx++] = 0x0d;
buffer[posx++] = 0x0a;
WriteStringFile(buffer,posx);
}
}
for(i[10] = startEnd[10][0]; i[10] <= startEnd[10][1]; i[10] ++)
{
if (maxPartNumber > 10)
{
posx = pos;
for(j = 0; j < (int)(startEnd[10][1] - startEnd[10][0] + 1); j ++)
count[j] = 0;
for(j = 0; j < ((int)maxPartNumber - 10); j ++)
{
k = maxPartNumber - j - 1;
if (numflag[10] == 0)
buffer[posx++] = numCharacter[i[k]];
else
buffer[posx++] = numCharacter2[i[k]];
count[i[k] - startEnd[10][0]] ++;
}
run = true;
for(j = 0; j < (int)(startEnd[10][1] - startEnd[10][0] + 1); j ++)
{
if (count[j] > (int)maxRepeatNum)
{
run = false;
break;
}
}
if (run)
{
buffer[posx++] = 0x0d;
buffer[posx++] = 0x0a;
WriteStringFile(buffer,posx);
}
}
for(i[9] = startEnd[9][0]; i[9] <= startEnd[9][1]; i[9] ++)
{
if (maxPartNumber > 9)
{
posx = pos;
for(j = 0; j < (int)(startEnd[9][1] - startEnd[9][0] + 1); j ++)
count[j] = 0;
for(j = 0; j < ((int)maxPartNumber - 9); j ++)
{
k = maxPartNumber - j - 1;
if (numflag[9] == 0)
buffer[posx++] = numCharacter[i[k]];
else
buffer[posx++] = numCharacter2[i[k]];
count[i[k] - startEnd[9][0]] ++;
}
run = true;
for(j = 0; j < (int)(startEnd[9][1] - startEnd[9][0] + 1); j ++)
{
if (count[j] > (int)maxRepeatNum)
{
run = false;
break;
}
}
if (run)
{
buffer[posx++] = 0x0d;
buffer[posx++] = 0x0a;
WriteStringFile(buffer,posx);
}
}
for(i[8] = startEnd[8][0]; i[8] <= startEnd[8][1]; i[8] ++)
{
if (maxPartNumber > 8)
{
posx = pos;
for(j = 0; j < (int)(startEnd[8][1] - startEnd[8][0] + 1); j ++)
count[j] = 0;
for(j = 0; j < ((int)maxPartNumber - 8); j ++)
{
k = maxPartNumber - j - 1;
if (numflag[8] == 0)
buffer[posx++] = numCharacter[i[k]];
else
buffer[posx++] = numCharacter2[i[k]];
count[i[k] - startEnd[8][0]] ++;
}
run = true;
for(j = 0; j < (int)(startEnd[8][1] - startEnd[8][0] + 1); j ++)
{
if (count[j] > (int)maxRepeatNum)
{
run = false;
break;
}
}
if (run)
{
buffer[posx++] = 0x0d;
buffer[posx++] = 0x0a;
WriteStringFile(buffer,posx);
}
}
for(i[7] = startEnd[7][0]; i[7] <= startEnd[7][1]; i[7] ++)
{
if (maxPartNumber > 7)
{
posx = pos;
for(j = 0; j < (int)(startEnd[7][1] - startEnd[7][0] + 1); j ++)
count[j] = 0;
for(j = 0; j < ((int)maxPartNumber - 7); j ++)
{
k = maxPartNumber - j - 1;
if (numflag[7] == 0)
buffer[posx++] = numCharacter[i[k]];
else
buffer[posx++] = numCharacter2[i[k]];
count[i[k] - startEnd[7][0]] ++;
}
run = true;
for(j = 0; j < (int)(startEnd[7][1] - startEnd[7][0] + 1); j ++)
{
if (count[j] > (int)maxRepeatNum)
{
run = false;
break;
}
}
if (run)
{
buffer[posx++] = 0x0d;
buffer[posx++] = 0x0a;
WriteStringFile(buffer,posx);
}
}
for(i[6] = startEnd[6][0]; i[6] <= startEnd[6][1]; i[6] ++)
{
if (maxPartNumber > 6)
{
posx = pos;
for(j = 0; j < (int)(startEnd[6][1] - startEnd[6][0] + 1); j ++)
count[j] = 0;
for(j = 0; j < ((int)maxPartNumber - 6); j ++)
{
k = maxPartNumber - j - 1;
if (numflag[6] == 0)
buffer[posx++] = numCharacter[i[k]];
else
buffer[posx++] = numCharacter2[i[k]];
count[i[k] - startEnd[6][0]] ++;
}
run = true;
for(j = 0; j < (int)(startEnd[6][1] - startEnd[6][0] + 1); j ++)
{
if (count[j] > (int)maxRepeatNum)
{
run = false;
break;
}
}
if (run)
{
buffer[posx++] = 0x0d;
buffer[posx++] = 0x0a;
WriteStringFile(buffer,posx);
}
}
for(i[5] = startEnd[5][0]; i[5] <= startEnd[5][1]; i[5] ++)
{
if (maxPartNumber > 5)
{
posx = pos;
for(j = 0; j < (int)(startEnd[5][1] - startEnd[5][0] + 1); j ++)
count[j] = 0;
for(j = 0; j < ((int)maxPartNumber - 5); j ++)
{
k = maxPartNumber - j - 1;
if (numflag[5] == 0)
buffer[posx++] = numCharacter[i[k]];
else
buffer[posx++] = numCharacter2[i[k]];
count[i[k] - startEnd[5][0]] ++;
}
run = true;
for(j = 0; j < (int)(startEnd[5][1] - startEnd[5][0] + 1); j ++)
{
if (count[j] > (int)maxRepeatNum)
{
run = false;
break;
}
}
if (run)
{
buffer[posx++] = 0x0d;
buffer[posx++] = 0x0a;
WriteStringFile(buffer,posx);
}
}
for(i[4] = startEnd[4][0]; i[4] <= startEnd[4][1]; i[4] ++)
{
if (maxPartNumber > 4)
{
posx = pos;
for(j = 0; j < (int)(startEnd[4][1] - startEnd[4][0] + 1); j ++)
count[j] = 0;
for(j = 0; j < ((int)maxPartNumber - 4); j ++)
{
k = maxPartNumber - j - 1;
if (numflag[4] == 0)
buffer[posx++] = numCharacter[i[k]];
else
buffer[posx++] = numCharacter2[i[k]];
count[i[k] - startEnd[4][0]] ++;
}
run = true;
for(j = 0; j < (int)(startEnd[4][1] - startEnd[4][0] + 1); j ++)
{
if (count[j] > (int)maxRepeatNum)
{
run = false;
break;
}
}
if (run)
{
buffer[posx++] = 0x0d;
buffer[posx++] = 0x0a;
WriteStringFile(buffer,posx);
}
}
for(i[3] = startEnd[3][0]; i[3] <= startEnd[3][1]; i[3] ++)
{
if (maxPartNumber > 3)
{
posx = pos;
for(j = 0; j < (int)(startEnd[3][1] - startEnd[3][0] + 1); j ++)
count[j] = 0;
for(j = 0; j < ((int)maxPartNumber - 3); j ++)
{
k = maxPartNumber - j - 1;
if (numflag[3] == 0)
buffer[posx++] = numCharacter[i[k]];
else
buffer[posx++] = numCharacter2[i[k]];
count[i[k] - startEnd[3][0]] ++;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -