Sunday, May 10, 2009

In code C, How can I erase special characters from a char array?

I have this code:





int readConfig(char *IP, int *p, char Myfile[]){


char dir[32];


char pto[32];


char c='a';


FILE *fp;


int i=0;





if((fp=fopen(Myfile,"r"))==NULL){


return -1;


}


while(c!=EOF %26amp;%26amp; c!='\n'){


c=getc(fp);


if(c!=EOF %26amp;%26amp; c!='\n'){


dir[i++]=c;





}


}





i=0;


c='a';





while(c!=EOF %26amp;%26amp; c!='\n'){


c=getc(fp);


if(c!=EOF %26amp;%26amp; c!='\n'){


pto[i++]=c;


}


}





*puerto=atoi(pto);


strcpy(IP, dir);


return 0;


}





and the file contains this information: 255.255.255.255


5555





Well, when I print the IP value, this is the result


IP: 255.255.255.255fhv���





How can I do for fix it??? I want that only print: IP: 255.255.255.255





Thanks!!!!

In code C, How can I erase special characters from a char array?
Cap the string (nul terminate) like so:





while(c!=EOF %26amp;%26amp; c!='\n')


{


c=getc(fp);


if(c!=EOF %26amp;%26amp; c!='\n'){


pto[i++]=c;


}





pto[i]='\0'; //cap it now!





That bad print out you've got is a classic/common result of printing a non nul-terminated string...
Reply:You need to null terminate your strings or write by count (ie. string length)
Reply:memset your variable before filling it


No comments:

Post a Comment