首页 > 解决方案 > 如何反转char数组中的元素?C++

问题描述

我是编程新手,我正在尝试反转 char 数组的内容。但是我的输出中的第一个元素似乎得到了一个垃圾值。有人可以告诉我我做错了什么吗?

int main() {
    int size = 0;
    char arr[100];

    cout << "Enter how many elements are added to array" << endl;
    cin >> size;
    cout << "Enter " << size << " elements " << endl;

    for(int i = 0; i < size; i++)
    {
        cin >> arr[i];
    }

    cout << "Input: [ " ;
    for (int i = 0; i < size; ++i) {
        cout << arr[i] << "  ";
    }
    cout << "]" << endl;

    cout << "Output: [";
    for(int j = size; j >= 0; j--)
    {
        cout << arr[j] << " ";
    }
    cout << "]" << endl;
}

标签: c++arrays

解决方案


问题是您正在打印一个从未初始化的元素:

for(int j = size; j >= 0; j--)
{
    cout << arr[j] << " ";
}

例如,如果您输入了 10 个值,这些值的索引是 0 到 9。但是您正在访问元素 10,该元素从未被初始化,因此您会得到未定义的行为。你需要这个:

for (int j = size - 1; j >= 0; j--)
{
    cout << arr[j] << " ";
}

推荐阅读