// // Created by jihuayu on 2020/2/12. // #include<stdio.h> #include<malloc.h> #include<string.h> const char *base_num[11] = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"}; #define NUM_LENGTH (11) typedef struct Var { char *name; int num; } Var; typedef struct Line { char *str; int pos; } Line; typedef struct VM { Var **vars; } VM; //从位置pos开始比较base是不是和str一样 int cmp(const char *base, const char *str, int pos) { for (int i = 0; i < strlen(str); ++i) { if (base[pos + i] != str[i] || (i + pos >= strlen(base))) { return 0; } } return 1; } int cn_to_num1(Line *line) { for (int i = 0; i < NUM_LENGTH; i++) { if (cmp(line->str, base_num[i], line->pos)) { line->pos += strlen(base_num[i]); return i; } } return -1; } int cn_to_num(Line *line) { int a1 = cn_to_num1(line); int a2 = cn_to_num1(line); if (a2 == -1) { return a1; } int a3 = cn_to_num1(line); if (a3 == -1) { if (a1 == 10 & a2 == 10) { return -1; } if (a2 == 10) { return a1 * 10; } if (a1 == 10) { return 10 + a2; } } if (a2 == 10) { return a1 * 10 + a3; } return -1; } char *num_to_cn(int num) { return ""; } void print(char *name) { printf("%s", ""); } Var *create_var(char *name, int num) { Var *var = (Var *) malloc(sizeof(Var)); var->name = name; var->num = num; return var; } void add(VM *vm, char *name, int num) { } void desc(VM *vm, char *name, int num) { }
来源:https://www.cnblogs.com/jhy16193335/p/12298379.html