Hi,
I have a text file as input which has odd chars like: - // "
Bellow is a sample:
Jul 6 00:00:13 proxyhost httpd[7266]: [ID 477494 local3.info] 172.26.74.212 - [06/Jul/2007:00:00:13 -0400] "GET http://www.google.com/gwt/i?i=08
9E3394C_C235D1FF_FA6C3045 HTTP/1.1" 200 200 383 78881e-1 N COMPLETE 158 REQ:220:0:130:4:100:0:10:8:30:0:60:0:5:0:200:0 EXE:80:0:125:0:15:0:230:0 MOD
:240:0:210:0:90:0:110:0:20:0 RES:40:0:70:30:120:0:260:0 PD:126:0 113 - 1
I read the file line by line and split it with strtok but once I try to split the odd chars strtok is not doing its job. Bellow is the C code I use:
/* Counter */
int i=0;
/* Read the file until EOF */
while ( fgets ( line, sizeof line, input_file_pointer ) != NULL ) /* read a line */
{
pch = strtok (line, " ");
arra[i]= pch;
while (pch != NULL)
{
pch = strtok (NULL, " ");
arra[i]= pch;
i++;
}
}
printf("(%s) (%s) (%s) (%s) (%s) (%s) (%s) (%s) (%s) (%s) (%s) (%s) (%s) (%s) (%s)\n", arra[0],arra[1],arra[2],arra[3],arra[4],arra[5],arra[
6],arra[7],arra[8],arra[9],arra[10],arra[11],arra[12],arra[13],arra[14]);
Because of the char "-" strtok stops to process after it. If I put in the delimitors also the char "-" if get further with processing but break again at """ and also again at "/" from http://www.google.com.
The output I get with only space as delimitor:
(6) (00:00:18) (to5magproxy1) (httpd[7141]:) ([ID) (477494) (local3.info]) (172.30.128.215) () () () () (T) (1) (TE)
The problems are:
-The 1st field stored in arra[0] (should contain Jul) is missing:
-Once strok hits the char - it stops to parse.
There is a way to overcome this strtok behaviour and force it to parse regardles of the char types?