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)