По существу, строковые литералы постоянны и не могут быть изменены.В следующей строке:
char *a="123456";
char *a
следует заменить на const char * a
, поскольку a
указывает на блок постоянной памяти.Далее в функции вы пытаетесь изменить этот блок постоянной памяти, и это приводит к ошибке времени выполнения.
Чтобы получить массив реальных символов, который вы можете использовать в такой функции, вы должны использовать:
char a[] = "123456";
Это создаст изменяемый (неконстантный) массив, которым вы можете свободно манипулировать.