优化了命名

This commit is contained in:
lzy
2024-04-28 13:10:56 +08:00
parent d75a518c0f
commit ba9f2e37a7
155 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
# 方便起见一般都会先定义编译器链接器
CC = gcc
LD = gcc
# 正则表达式表示目录下所有.c文件相当于SRCS = main.c a.c b.c
SRCS = $(wildcard *.c)
# OBJS表示SRCS中把列表中的.c全部替换为.o相当于OBJS = main.o a.o b.o
OBJS = $(patsubst %c, %o, $(SRCS))
# 可执行文件的名字
TARGET = main
# .PHONE伪目标具体含义百度一下一大堆介绍
.PHONY:all clean
# 要生成的目标文件
all: $(TARGET)
LDFLAGS=-L/usr/local/lib
# LDLIBS=-lqueue -lllist
# 第一行依赖关系冒号后面为依赖的文件相当于Hello: main.o a.o b.o
# 第二行规则:$@表示目标文件,$^表示所有依赖文件,$<表示第一个依赖文件
$(TARGET): $(OBJS)
$(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
# 上一句目标文件依赖一大堆.o文件这句表示所有.o都由相应名字的.c文件自动生成
%.o:%.c
$(CC) -c $^
# make clean删除所有.o和目标文件
clean:
rm -f $(OBJS) $(TARGET)

View File

@@ -0,0 +1,121 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define DESC_SIZE 256
#define KEY_SIZE 256
#define BUFSIZE 512
#define FNAME "log"
struct node_st
{
struct node_st *ch[26];
char desc[DESC_SIZE];
};
static int get_word(FILE *fp, char *key, char *desc)
{
char buf[BUFSIZE];
char *retp;
int i, j;
retp = fgets(buf, BUFSIZE, fp);
if (NULL == retp)
return -1;
for (i = 0; i < KEY_SIZE - 1 && buf[i] != ':'; i++)
key[i] = buf[i];
key[i] = '\0';
i++;
for (j = 0; j < DESC_SIZE - 1 && buf[i] != '\0'; j++, i++)
desc[j] = buf[i];
desc[j] = '\0';
return 0;
}
static struct node_st *newnode()
{
struct node_st *node;
int i;
node = malloc(sizeof(*node));
if (NULL == node)
return NULL;
node->desc[0] = '\0';
for (i = 0; i < 26; i++)
node->ch[i] = NULL;
return node;
}
static int insert(struct node_st **root, char *key, char *desc)
{
if (NULL == *root)
{
*root = newnode();
if (NULL == *root)
return -1;
}
if ('\0' == *key)
{
strcpy((*root)->desc, desc);
return 0;
}
return insert((*root)->ch + *key - 'a', key + 1, desc);
}
static char *find(struct node_st *root, char *key)
{
if (NULL == root)
return NULL;
if ('\0' == *key)
return root->desc;
return find(root->ch[*key - 'a'], key + 1);
}
int main()
{
struct node_st *tree;
FILE *fp;
char desc[DESC_SIZE] = {'\0'}, key[KEY_SIZE] = {'\0'};
int ret;
char *datap;
fp = fopen(FNAME, "r");
if (NULL == fp)
{
fprintf(stderr, "fopen():error!\n");
exit(1);
}
while (1)
{
ret = get_word(fp, key, desc);
if (-1 == ret)
break;
// puts(key);
// puts(desc);
insert(&tree, key, desc);
}
datap = find(tree, "donkey");
if (NULL == datap)
printf("Can not find!\n");
else
puts(datap);
fclose(fp);
exit(0);
}