That's fairly redundant.
char *p;
while (p = strchr(tmpfn, ' '))
*p = '_'; char *p;
while (p = strchr(tmpfn, ' '))
*p = '_'; char *cp = NULL;
for(cp = tmpfn; cp && *cp; cp++)
if(isspace(*cp))
*cp = '_';my brain too