Hỏi về hàm đảo ngược chuỗi

Em viết hàm xuất chuỗi theo thứ tự ngược như sau:

void reverseCharArray(char a[MAX])
{
    int length = strlen(a);

    for (int i = length - 1; i >= 0; i--)
    {
        cout << a[i];
    }
    
    cout << endl;
}

sau đó, vì yêu cầu của bài tập mà em viết lại:

void swap(char &a, char &b)
{
    char c = a;
    a = b; b = c;
}

void arrayOut(char a[MAX])
{
    for (int i = 0; i < strlen(a); i++)
    {
        cout << a[i];
    }
    
    cout << endl;
}

void reverseCharArray(char a[MAX])
{
    int length = strlen(a);
    
    for(int i = 0; i <= length; i++)
    {
        swap(a[i], a[length - i]);
    }
    
    a[length + 1] = '\0';

    arrayOut(a);
}

đoạn code thứ nhất xuất ra hàm theo thứ tự ngược, nhưng đoạn code thứ hai lại xuất ra hàm được nhập vào.
Xin mọi người cho em biết lỗi của đoạn code thứ hai và cách khắc phục ạ. Em cảm ơn!

For đến giữa mảng thôi, for tới cuối mảng bị đảo 2 lần nên giống như không đảo

5 Likes

cảm ơn, em đã giải được ạ

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?