0

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)

0 Answers0