...just an idea...
Code:
char * findlast(const char str[], const char pat[])
{
const char * nxt = str, * end = 0;
while(0 != (nxt = strstr(nxt, pat)))
{
end = nxt;
++nxt;
}
return (char*)end;
}
char * addext(char str[], const char * ext)
{
char * p = findlast(str, "\\"), * x = findlast(str, ".");
if(!p)
{
p = findlast(str, "/");
}
p = (p ? p+1 : str);
if(x)
{
*x = 0;
}
return strcat(strcpy(str, p), ext);
}
char * config(char str[])
{
return addext(str, ".cfg");
}
int main(int argc, char ** argv)
{
char s[MAX_PATH];
char s1[MAX_PATH] = "c:/etc/dev/a";
char s2[MAX_PATH] = "c:/etc/dev/b.exe";
char s3[MAX_PATH] = "c.exe";
char s4[MAX_PATH] = "d";
strcpy(s, *argv);
printf("%s\n", config(s));
printf("%s\n", config(s1));
printf("%s\n", config(s2));
printf("%s\n", config(s3));
printf("%s\n", config(s4));
return 0;
}