-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathvariable.c
More file actions
88 lines (65 loc) · 1.55 KB
/
variable.c
File metadata and controls
88 lines (65 loc) · 1.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct {
char *var;
char *val;
} Variable;
int vCnt=0;
//~ Variable ** pool = NULL;
Variable ** var_add(Variable ** pool, char *var, char *val);
int check_variable(Variable ** pool, char *var); // if exist, return value, if not null
char * get_value(Variable ** pool, char *var);
int check_variable(Variable ** pool, char *var) {
int i=0;
while(i<vCnt) {
if(strcmp(pool[i++]->var, var)==0) return --i;
}
return -1;
}
char * get_value(Variable ** pool, char *var) {
int i=0;
while(i<vCnt) {
if(strcmp(pool[i]->var, var)==0) return pool[i]->val;
i++;
}
return NULL;
}
Variable ** var_add(Variable ** pool, char *var, char *val) {
if(pool==NULL) {
pool = (Variable **)realloc(pool, sizeof(Variable *));
pool[0] = (Variable *)malloc(sizeof(Variable));
pool[0]->var = var;
pool[0]->val = val;
vCnt++;
return pool;
}
int pos = check_variable(pool, var);
if(pos!=-1) {
pool[pos]->val = val;
return pool;
}
pool = (Variable **)realloc(pool, vCnt * sizeof(Variable *));
pool[vCnt] = (Variable *)malloc(sizeof(Variable));
pool[vCnt]->var = var;
pool[vCnt]->val = val;
vCnt++;
return pool;
}
//~ int main() {
//~
//~ Variable ** pool = NULL;
//~ pool = var_add(pool, "x", "5");
//~ pool = var_add(pool, "y", "5");
//~ pool = var_add(pool, "x", "10");
//~
//~ int c=0;
//~ while(c<vCnt){
//~ printf("%s : \"%s\"\n", pool[c]->var, pool[c]->val);
//~ c++;
//~ }
//~
//~ printf("x : \"%s\"\n", get_value(pool, "x"));
//~
//~ return 0;
//~ }