Why changing string characters causes segmentation fault(core dumped):
char *str = \"string\";
str[0] = \'S\'; //segmentation fault(core dumped)
The solution is simple, declare your string in the following way instead
char str[] = "string";
The reason why you should do this is because of the Undefined behavior. Creating a string with pointers will make your string locate at the read only
memory part, so you cannot modify it, whereas another way will also make a copy of your string on the stack. Also check What is the difference between char s[] and char *s in C?