strchr()使えばいいじゃん。つーかstrcrep()ってなんだ。

char *url_encode(char *str)
{
char *tp1=str,*tp2,*buf;
unsigned char c;
static const char chtable[]="_-.* ";
int i;

if((buf=(char *)malloc(strlen(str)+1))==NULL)
return NULL;
strcpy(buf,str);
tp2=buf;

for(;c = *buf;buf++){
if(isalnum(c) || strchr(chtable, c)){
*str++=*buf;
}
else {
sprintf(str,"%%%02X",(unsigned char)*buf);
str+=3;
}
}
*str='\0';
free(tp2);

strcrep(tp1,' ','+');

return tp1;
}