Основная проблема здесь не в функции strcpy()
, а в том, что вы не выделяете память для самой строки. На вашем месте я бы сделал что-то вроде
char* s1=(char*)malloc(SIZE); // the SIZE is the predefined maximum size of your string
strcpy(s1,"smilehihi");
s1[6] = 'a';
Редактировать:
Просто в качестве совета рассмотрите возможность использования stpncpy()
. Это помогает избежать переполнения буфера и, в вашем случае, поможет вам избежать превышения максимального размера char*
char * stpncpy(char * dst, const char * src, size_t len);