Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct cella {
- char *token;
- struct cella *next;
- };
- typedef struct cella *ListaToken;
- ListaToken tokenize(char *s) {
- ListaToken l;
- int i;
- while (s[i]){
- l = (ListaToken)malloc(sizeof(ListaToken));
- l->next = s[i];
- i++;
- }
- l->next = NULL;
- return l;
- }
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- typedef struct cella {
- char *token;
- struct cella *next;
- } *ListaToken;
- ListaToken tokenize(const char *s) {
- ListaToken top = NULL, current, l;
- char *p, *tmps = strdup(s);
- for(p=strtok(tmps, " ");p;p=strtok(NULL, " ")){
- l = malloc(sizeof(*l));
- l->token = strdup(p);
- l->next = NULL;
- if(top == NULL){
- current = top = l;
- } else {
- current->next = l;
- current = l;
- }
- }
- free(tmps);
- return top;
- }
- void print(ListaToken l){
- while(l){
- printf(""%s" -> ", l->token);
- l = l->next;
- }
- printf("NULLn");
- }
- int main(){
- ListaToken list1, list2;
- list1 = tokenize("12 17 + 4 3 - /");
- print(list1);
- list2 = tokenize("12 17 + 4 - /");
- print(list2);
- return 0;
- }
- char *mystrdup(const char *s){
- char *dup = malloc(strlen(s) + 1);
- return strcpy(dup, s);
- }
- char *mystrtok_r(char *str, const char *delims, char **store){
- char *p, *wk;
- if(str != NULL){
- *store = str;
- }
- if(*store == NULL) return NULL;
- *store += strspn(*store, delims);//skip delimiter
- if(**store == '