Try
#include <stdio.h>
int merge( const char * s1, const char * s2, char * buf, size_t bufsize)
{
const char * sa[2] = {s1, s2 };
size_t i = 0;
size_t k = 0;
for ( i = 0; i<2; ++i)
{
const char *p = sa[i];
while ( *p )
{
if ( k == bufsize) return -1;
buf[k] = *p;
++k;
++p;
}
}
if ( k == bufsize) return -1;
buf[k] = '\0';
return 0;
}
int main()
{
const char * s1 = "foo";
const char * s2 = "bar";
char m[20];
int rc = merge(s1, s2, m, sizeof(m));
if ( rc )
printf("unable to merge\n");
else
printf("merged string '%s'\n", m);
return 0;
}