Why does swap function not work? The program fails on this line in the first swap call:
*ch1 = *ch2;
All code:
void swap(char *ch1, char *ch2);
void reverse(char *string);
int main() {
    char *test_string = "abcd";
    char *test_string1 = "abc";
    reverse(test_string);
    reverse(test_string1);
    printf("%s %s", test_string, test_string1);
    assert(strcmp(test_string, "dcba"));
    assert(strcmp(test_string1, "cba"));
}
void reverse(char *string) {
    for (int i = 0, j = (int) (strlen(string) - 1); i != j; ++i, --j) {
        swap(&string[i], &string[j]);
    }
}
void swap(char *ch1, char *ch2) {
    char temp = *ch1;
    *ch1 = *ch2;
    *ch2 = temp;
}
Output:
Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
