summaryrefslogtreecommitdiff
path: root/tests/splitter.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/splitter.c')
-rw-r--r--tests/splitter.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/tests/splitter.c b/tests/splitter.c
new file mode 100644
index 0000000..25292f6
--- /dev/null
+++ b/tests/splitter.c
@@ -0,0 +1,53 @@
+char **line_splitter(char *line,int *rlen) {
+ char **a;
+ int i=0,j=0;
+ int len;
+ len=1;
+ for(i=0;line[i] && line[i] == ' ';i++);//skip leading space
+ for(;line[i];) {
+ for(;line[i] && line[i] != ' ';i++);//skip rest of data
+ for(;line[i] && line[i] == ' ';i++);//skip rest of space
+ len++;
+ }
+ a=malloc(sizeof(char *) * len+1);
+ a[len]=0;
+ len=0;//reuse!
+ for(i=0;line[i] && line[i] == ' ';i++);//skip leading space
+ a[len]=line+i;
+ for(;;) {
+ for(;line[i] && line[i] != ' ';i++);//skip rest of data
+ if(line[i]) {
+ line[i]=0;
+ i++;
+ } else {
+ //we're at the end! I guess return this shit.
+ len++;
+ a[len]=0;
+ *rlen=len;
+ return a;
+ }
+ for(;line[i] && line[i] == ' ';i++);//skip rest of space
+ if(line[i]) {
+ len++;
+ a[len]=line+i;
+ } else {
+ len++;
+ a[len]=0;
+ *rlen=len;
+ return a;
+ }
+ }
+ *rlen=len;
+ return a;
+}
+
+int main(int argc,char *argv[]) {
+ char **a;
+ int len;
+ int i;
+ a=line_splitter(strdup(argv[1]),&len);
+ for(i=0;i<len;i++) {
+ printf("a[%d]=\"%s\"\n",i,a[i]);
+ }
+ return 0;
+}