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
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment