?? main.c
字號:
#include <windows.h>
#include <wchar.h>
#include <stdio.h>
#include <stdlib.h>
#define MAX_LEN 512
#define READIN_FILE "readin.txt"
#define OUTFILE "xefs.dat"
typedef struct _RULE {
ULONG Policy;
WCHAR Pattern[MAX_LEN];
} RULE, *PRULE;
RULE gRule;
BOOLEAN IsFileExist(char *filename);//檢查文件是否存在
BOOLEAN CheckReadinFile(char *filename);//檢查讀入的文件。合法的文件第一行是Policy,第二行是Pattern
int main()
{
FILE *pReadinFile;
FILE *pOutFile;
WCHAR wbuffer[MAX_LEN];
ULONG Policy; //讀出的策略
ULONG ByteWritten = 0; //已經寫了的字節數
ULONG ByteWrittenSum = 0;//前面數據的和,用來校驗
ULONG i, len;
PULONG Data;
system("cls");
if(!IsFileExist(READIN_FILE))
{
printf("文件%s不存在!\n", READIN_FILE);
exit(1);
}
if (!CheckReadinFile(READIN_FILE))
{
printf("文件%s不符合格式要求:第一行Policy;第二行Pattern\n", READIN_FILE);
exit(1);
}
pReadinFile = fopen("readin.txt", "r");
pOutFile = fopen("xefs.dat", "w");
fscanf(pReadinFile, "%d", &Policy);//讀第一行
fwrite(&Policy, sizeof(ULONG), 1, pOutFile);//寫頭4個字節(Policy)
ByteWritten += sizeof(ULONG); //此時寫了幾個字節
ByteWrittenSum += Policy; //累加校驗和
fscanf(pReadinFile, "%S", &wbuffer);//讀第二行
len = wcslen(wbuffer); //讀出的長度(按WCHAR算)
fwrite(wbuffer, sizeof(WCHAR), len, pOutFile);//將讀出的Pattern按WCHAR寫進文件
ByteWritten += len * sizeof(WCHAR); //寫了多少個字節
Data = (PULONG)wbuffer;
for(i = 0; i < len / sizeof(WCHAR); i++) //這里循環條件按ULONG算,sizeof(ULONG) = sizeof(WCHAR) * 2
ByteWrittenSum += Data[i]; //累加校驗和
//將剩余部分寫空
memset(wbuffer, 0, MAX_LEN * sizeof(WCHAR));
fwrite(wbuffer, sizeof(WCHAR), (sizeof(RULE) - ByteWritten) / sizeof(WCHAR), pOutFile);
//最后4個字節寫CRC校驗和
fwrite(&ByteWrittenSum, sizeof(ULONG), 1, pOutFile);
fclose(pReadinFile);
fclose(pOutFile);
return 0;
}
BOOLEAN IsFileExist(char *filename)
{
FILE *fp;
fp = fopen(filename, "r");
if (fp)
{
fclose(fp);
return TRUE;
}
return FALSE;
}
BOOLEAN CheckReadinFile(char *filename)
{
FILE *fp;
ULONG linenum = 0;
CHAR buf[MAX_LEN * 2];
fp = fopen(filename, "r");
while (fscanf(fp, "%s", buf) > 0) {
linenum ++;
}
fclose(fp);
if(linenum != 2)
return FALSE;
return TRUE;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -