39 lines
1.0 KiB
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;
|
||
|
}
|