c-uebungen/Assignment_015/solution/reverse.c

39 lines
1.0 KiB
C

/**
* String umdrehen.
*
* Schreiben Sie eine Funktion `reverse`, der man einen String übergibt und
* die diesen String dann umdreht. So wird z.B. aus dem String `abcd` der
* String `dcba`. Die Funktion verändert den ihr übergebenen String direkt.
* Der Aufrufer der Funktion muss dafür Sorge tragen, dass der übergebene
* String schreibbar ist.
*/
#include <string.h>
#include <stdio.h>
#include <assert.h>
void reverse(char* chars) {
int len = strlen(chars);
for (int i = 0; i < len / 2; i++) {
char tmp = chars[i];
chars[i] = chars[len - i - 1];
chars[len -i - 1] = tmp;
}
}
void test_reverse(const char* input, const char* expected) {
char buffer[255];
strcpy(buffer, input);
reverse(buffer);
assert(strcmp(buffer, expected) == 0);
}
int main(int argc, char** argv) {
test_reverse("hello world", "dlrow olleh");
test_reverse("helloworld", "dlrowolleh");
test_reverse("a", "a");
test_reverse("ab", "ba");
test_reverse("abc", "cba");
puts("OK");
return 0;
}