我的 C 样式字符串中的最后字符是 I 时的奇数值



对于我们的作业,我们必须在C++中使用 C 样式的字符串,并反转输入,但是当我有一个 6 个或更多字符的字符串时,它会输出反转的字符串以及一些垃圾值。感谢任何解决此问题的帮助。

#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    const int SIZE = 11;
    char name[SIZE];

    cout << "Please enter a name of 10 characters or less ";
    cin.getline(name, SIZE);

    char *stringStart, *stringEnd;
    stringStart = name;
    stringEnd = &name[strlen(name)-1];
    char backwardsName[SIZE];
    int i = 0;
    // Appending each element to backwardsName starting with last character from name and decrementing.
    while (stringEnd >= stringStart)
    {
        backwardsName[i] = *stringEnd;
        ++i;
        --stringEnd;
    }
    cout << backwardsName << endl;

    return 0;
}

我尝试使用指针甚至以 NULL 字符"\0"结束向后命名字符串,但无济于事。指针做了同样的事情。NULL 字符确实有帮助,但是当字符串为 8 个或更多字符时,它开始崩溃(我认为)。

问题出在NUL终止上。反转后您没有放 backwardsName.

backwardsName[i] = '';
cout << backwardsName << endl;

最新更新