#include <stdio.h> #include <string.h> #include <stdlib.h> char *SkipChars(char *buf, const char charToSkip) { char *p = buf; while (p && (*p == charToSkip)) p++; return p; } char *SkipString(char *buf, const char *str) { char *p; p = strstr(buf, str); if (p) { p += strlen(str); } return p; } char *ParseLine(char *buf, char delim, char *token) { char *start, *end; int len; if ((!buf) || (!token)) return NULL; start = SkipChars(buf, delim); if (!*start) return NULL; end=NULL; if (start) { end = start; while ((end) && (*end) && (*end != delim)) end++; len = end-start; strncpy(token, start, len); token[len] = 0; } return end; } const char desc[] = "This is just an example for skipstring function"; char res[] = "Mac Type Interface\n" "1111.2222.3333 S fe0/0\n" "aabc.ddef.8754 S fe0/0\n" "553a.4455.6789 D fe0/1\n" "Total Macs 0\n"; void main( int argc, char **argv ) { int i,balance,len; char *p, *end; char token[100]; char *saveptr; /* Program entry point */ if (argc) { for( i=0; i<argc; i++) { printf("argv[%d] = %s\n", i, argv[i]); p = SkipChars(argv[i], ' '); p = SkipChars(p, '"'); while (p) { if (balance) balance=0; end = SkipChars(p, '"'); if (end) { balance = 1; len = end-p; strncpy(token, p, len); token[len] = 0; printf("token=%s\n", token); p = end; //printf("p = %s\n", p); } if ((!balance) || (!len)) break; } } } printf("original string: %s\n", desc); p = SkipString((char*)&desc[0], "an example for "); if (p) { printf("After SkipString: %s\n", p); } p = SkipString((char *)res, "Interface\n"); if (p) { p = strtok(p, "\n"); //printf("original p=%s\n", p); while (p) { if (strstr(p, "Total Mac")) break; printf("\n\n--------------------------------------\n"); end = ParseLine(p, ' ', token); //printf("end=%s\n", end); i = 0; while (end){ p = end; //printf("end:**%s\n", p); printf("Token%d=%s,\t", i+1, token); end = ParseLine(p, ' ', token); i++; } printf("\n"); printf("%s\n", p); printf("--------------------------------------\n"); p = strtok(NULL, "\n"); } } }
Friday, July 16, 2010
Parse token
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment