Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *AppendNewFilename(const char *oldFilename, char pattern)
{
if(!oldFilename)
{
fprintf(stderr, "Invalid parameter for filename:{NULL}.\n");
return NULL;
}
else
{
unsigned int nFileLen = strlen(oldFilename)+2;
/* Allocate 2 more bytes one for '\0' and one for the pattern. */
char *generatedFilename = calloc(nFileLen, sizeof(char));
if(!generatedFilename)
{
fprintf(stderr, "Memory Allocation Error.\n");
return NULL;
}
else
{
unsigned int index, jndex;
for(index = 0, jndex = 0; index < nFileLen-1; index++)
{
if(index == 3)
{
generatedFilename[index] = pattern;
continue;
}
generatedFilename[index] = oldFilename[jndex++];
}
if(index == nFileLen-1)
{
generatedFilename[index] = '\0';
return generatedFilename;
}
else
{
fprintf(stderr,"For Loop Error.\n");
return NULL;
}
}
}
}
int main(int argc, char *argv[])
{
char *testfile = AppendNewFilename("C:\\my_file.txt", '_');
puts(testfile);
free(testfile);
printf("Hit enter to continue...\n");
getchar();
}