Сегодня вечером вспомнил одну старую задачу -- написать функцию переворота строки только с использованием указателей. Задача на первый взгляд простая, и это действительно так -- если использовать очевидный, простой и не особенно оригинальный подход. Вопрос же в следующем -- насколько компактно и необычно можно решить эту задачу?
Вот мой вариант ответа:
#include <stdio.h>
void reverse(char *str)
{
char *p = str;
while (*p && *(p + 1) && *p++)
;
while ((p > str) && (*str += *p) && (*p = *str - *p) && (*str++ -= *p--))
;
}
int main(int argc, char **argv)
{
char *str = argv[1];
reverse(str);
printf("desrever -- %s\n", str);
return 0;
}
И, разумеется, "hello world":
$ gcc reverse.c -o reverse
$ ./reverse "hello world"
desrever -- dlrow olleh
- Артём
Комментариев нет:
Отправить комментарий