Parse token

#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");
}
}
}
Advertisements

About The Seeker

Silicon Valley
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s