snprintf - это только C99, а не C89, sprintf_s / strcpy_s - это только MSVC, а не C89, не C99.
char *mystr="come from stdin or file or ...";
char buf[1024];
...
memset(buf,0,sizeof buf);
strncpy(buf,mystr,(sizeof buf)-1);
или не массив:
#define BUFLEN 512
char *mystr="come from stdin or file or ...";
char *buf;
...
char *buf=calloc(1,BUFLEN);
strncpy(buf,mystr,BUFLEN-1);
Работает во всех средах ANSI C.