Question:
In code C, How can I erase special characters from a char array?
yo
2007-11-15 20:07:18 UTC
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 && c!='\n'){
c=getc(fp);
if(c!=EOF && c!='\n'){
dir[i++]=c;

}
}

i=0;
c='a';

while(c!=EOF && c!='\n'){
c=getc(fp);
if(c!=EOF && 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!!!!
Three answers:
gene_frequency
2007-11-15 20:29:47 UTC
Cap the string (nul terminate) like so:



while(c!=EOF && c!='\n')

{

c=getc(fp);

if(c!=EOF && 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...
mdigitale
2007-11-15 20:13:40 UTC
You need to null terminate your strings or write by count (ie. string length)
Chris
2007-11-15 20:09:58 UTC
memset your variable before filling it


This content was originally posted on Y! Answers, a Q&A website that shut down in 2021.
Loading...