Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   string changing - problem (http://www.go4expert.com/forums/string-changing-problem-t10165/)

dusoo 21Apr2008 17:46

string changing - problem
 
Hello everyone.
Im playing with one parser that is not working.
It's failing with segment.error, and I could not fix it, since im not good at all in c :(.
I think the issue is in one place, where im trying to change one string to other one. It's always failing on third step - ending with that segm.error.
Im calling fillcd, where cid2cid "function" is used to modify the buf string.
After third succesfully changed string it fails…Isnt there a memory problem?

buf: 3000/000/00/MOY,3000/000/00/MAX,3000/000/00/CUM, 3000/000/00/ECH,3004/000/00/CUM,3004/000/00/ECH,3004/000/00/MOY, 3004/000/00/MAX,3004/001/00/CUM,3004/001/00/ECH,3004/001/00/MOY, 3004/001/00/MAX, 3008/000/00/CUM,3008/000/00/ECH,3008/000/00/MOY

Output in cd variable should be like: MOY_3000_000_00,MAX_3000_000_00,CUM_3000_000_00, ….

Thanks for any ideas !

Script:

...
Code:

char *cid2cid(char *s){
  static char tmp[20];

    printf("subor:%s\n",s);
    fflush(stdout);
     
  strcpy(tmp, s);
  s[0]=tmp[12];
  s[1]=tmp[13];
  s[2]=tmp[14];
  s[3]='_';
  s[4]=tmp[0];
  s[5]=tmp[1];
  s[6]=tmp[2];
  s[7]=tmp[3];
  s[8]='_';
  s[9]=tmp[5];
  s[10]=tmp[6];
  s[11]=tmp[7];
  s[12]='_';
  s[13]=tmp[9];
  s[14]=tmp[10];
  s[15]='\0';
  return s;
}

int fillcd( char *buf, char *cd[], FILE *f ) {
  char *p;
  int i;
//my part start
  printf("subor:%s\n",buf);
  fflush(stdout);   
//my part end   
  cd[0]=cid2cid(strdup(strtok(buf,",")));
  i=1;
    printf("subor:%s\n",cd[0]);
  while ( (p=strtok(NULL, ",")) != NULL ) cd[i++]=strdup(cid2cid(p));
  cd[i]=strdup("FINITO");
  return i;
}



char buf[1000], classn[100], *procstr[100], *cd[200];
counters=fillcd(inbuf,cd, fout);

Thanks for any ideas !


All times are GMT +5.5. The time now is 08:10.