资源简介

C语言实现的文件存储引擎,用到了很多高级的编程思想

资源截图

代码片段和文件信息

#include “c.h“
#include “debug.h“
#include “memmgr2.h“
#include “code.h“

void reverse_string(const char *src char *dest)
{
int i;
int len = strlen(src);
for (i = 0; i < len; i++)
dest[i] = src[len - 1- i];
dest[i] = ‘\0‘;
}

void row_code(const char *src int row char *dest)
{
int i j k = 0;
for (i = 0; i < row; i++) {
for (j = i; j < strlen(src); j += row)
dest[k++] = src[j]; 
}
dest[k] = ‘\0‘;
}

void qwe_code(const char *src char *dest)
{
static char str[] = “qwertyuiopasdfghjklzxcvbnm“;
int i;
for (i = 0; i < strlen(src); i++) {
dest[i] = str[src[i] - ‘a‘];
}
dest[i] = ‘\0‘;
}

/* dest size should be 2 times of src len */
void phone_code(const char *src char *dest int size)
{
static char *phone_key[] = {
“21“ “22“ “23“ /* a b c */  
“31“ “32“ “33“ /* d e f */
“41“ “42“ “43“ /* g h i */
“51“ “52“ “53“ /* j k l */
“61“ “62“ “63“ /* m n o */
“71“ “72“ “73“ “74“ /* p q r s */
“81“ “82“ “83“ /* t u v */
“91“ “92“ “93“ “94“ /* w x y z */ 
};
int len = strlen(src) i;
return_if_fail(size > len * 2
“Size should be larger than %d“ len * 2);
for (i = 0; i < len; i++){
strcat(dest phone_key[src[i] - ‘a‘]);
}
}

void mors_code(const char *src char *dest int size)
{
static char *mors_table[] = {
“-----“ “*----“ “**---“ “***--“ 
“****-“ “*****“ “-****“ “--***“
“---**“ “----*“
};
int len = strlen(src) i;
return_if_fail(size > len * 5
“Size should be larger than %d“ len * 5);
for (i = 0; i < strlen(src); i++) {
strcat(dest mors_table[src[i] - ‘0‘]);
}
}

#define c_to_lower(c) if(isupper(c)) (c) = tolower(c); 
int check_valid_code(char *src)
{
int i;
for (i = 0; i < strlen(src); i++){
if (isalpha(src[i])) {
c_to_lower(src[i]);
}
else return -1;
}
return 0;
}

#define swept(a b type) do { type * _t = a; a = b; b = _t; } while(0) 

/* 
 * 总的加密程序,src和dest分别是缓冲区,size是dest的大小
 * 字符串method表示加密方法  
*/
int code(char *src char *dest int size char *method)
{
int ret = check_valid_code(src);
return_val_if_fail(
ret == 0 
-1 
“Invalid Source Code“
);

ret = check_valid_code(method);
return_val_if_fail(
ret == 0 
-1 
“Invalid Method Code“
);

int method_len = strlen(method);
return_val_if_fail(
method_len >= 2 && method_len <= 8 
-1 
“Invalid method“
);
return_val_if_fail(
*(method + method_len - 2) == ‘b‘ && 
*(method + method_len - 1) == ‘a‘ 
-1 
“Invalid method“
);

int src_len = strlen(src);
return_val_if_fail(
src_len > 0 && src_len <= MAX_MSG_LEN
-1
“Invalid Src Msg Length“
);
return_val_if_fail(
size > src_len * 10 
-1 
“Dest Buffer Size Should Larger Than “
“10 Times of Source Buffer Size“
);

int i;
int buffer_size = MAX_MSG_LEN * 2 + 1;
char src_buf[MAX_MSG_LEN * 2 + 1];
char dst_buf[MAX_MSG_LEN * 2 + 1];

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      63106  2011-07-01 08:51  v1\a.out

     文件       1220  2011-07-01 09:53  v1\c.h

     文件     221369  2011-06-28 21:55  v1\code

     文件       4182  2011-07-05 08:33  v1\code.c

     文件        615  2011-07-05 08:33  v1\code.h

     文件       7644  2011-07-17 18:48  v1\command2.c

     文件        288  2011-07-17 17:45  v1\command2.h

     文件      12966  2011-07-05 17:07  v1\debug.h

     文件     241881  2011-07-01 09:49  v1\engine

     文件       3091  2011-07-01 09:53  v1\list.h

     文件       1945  2011-07-18 21:46  v1\main.c

     文件      23663  2011-07-05 14:29  v1\memmgr2.c

     文件        968  2011-07-01 09:53  v1\memmgr2.h

     文件      26680  2011-07-05 17:08  v1\store_engine.c

     文件       1108  2011-07-04 22:24  v1\store_engine.h

     文件        118  2011-07-01 09:53  v1\test.c

     文件        578  2011-07-01 09:53  v1\test_code.c

     文件       4191  2011-07-07 08:22  v1\user.c

     文件        517  2011-07-05 16:21  v1\user.h

     目录          0  2012-06-08 21:20  v1

----------- ---------  ---------- -----  ----

               616130                    20


评论

共有 条评论