نوشتن تابع معکوس‌کننده یک رشته در زبان C با استفاده از XOR

به کد زیر توجه کنید:

#include <stdio.h>
#include <string.h>

char *strReverse(char *);

int main()
{
    char str[] = "123456789";

    printf("%s\n", str);
    printf("%s\n", strReverse(str));

    return 0;
}

char *strReverse(char *str)
{
    int i, j;
    for(i = 0, j = strlen(str) - 1; i < j; i++, j--)
    {
        str[i] ^= str[j];
        str[j] ^= str[i];
        str[i] ^= str[j];
    }
    return str;
}

تابع strReverse را بصورت خلاصه‌تر هم می‌توان نوشت:

char *strReverse(char *str)
{
    int i, j;
    for(i = 0, j = strlen(str) - 1; i < j; i++, j--)
        (str[i] ^= str[j]), (str[j] ^= str[i]), (str[i] ^= str[j]);
    return str;
}

حلقه‌ی درون این تابع با استفاده از XOR باعث برعکس شدن رشته می‌شود. این حلقه حداکثر به‌اندازهٔ نصف طول رشتهٔ ورودی اجرا می‌شود. مقدار بازگشتی هم برابر اشاره‌گر به رشتهٔ هدف است. در این صفحه نیز روش دیگری برای معکوس کردن یک رشته ارائه شده است.