Переназначение нового символа на указатель char приведет к сбою.
Код действительно прост.
char *foo = "000"; // foo->"000\0" *(foo+0) = '1'; // Crash | what i expecting is foo->"100\0" *(foo+1) = (char)'2'; // Crash | what i expecting is foo->"120\0" *(foo+2) = '3'; // Crash | what i expecting is foo->"123\0"
ММО
char *foo = "000";
Создайте новый указатель char и указатель на строку "000\0".
*(foo+0) = '1';
или просто
*foo = '1';
разыменуйте указатель и назначьте новый символ адресу указателя, на который он указывает.
Что я уже пробовал:
char *foo = malloc(4); // codes work like a charm. *(foo+0) = '1'; *(foo+1) = '2'; *(foo+2) = '3'; *(foo+3) = '\0';
Эту проблему можно решить с помощью malloc (), но разве предыдущий код не имеет дело со "стеком", а этот-с "кучей"?