c++ - 指针和 Char 数组问题

标签 c++ pointers c-strings

好吧,这段代码确实编译了,它确实运行了,但它没有给我原始或反向数组的正确输出,只是乱码。我花了最后 4 个小时试图看看哪里出了问题(之前它根本不起作用,现在我至少可以输出应该是 C 字符串的内容,我得到了乱码)。有人请帮我看看我哪里错了。

#include <iostream>
#include <cstring>
using namespace std;


char* getInput();
char* getReverse(char[], int);
void displayResults(char *, char *);

const int MAX_SIZE = 21;

int main()
{
    //program to create a c-string and then output the reverse order
    char *original;
    char *reverse;
    original = getInput();
    int originalSize = strlen(original);
    reverse = getReverse(original, originalSize);
    displayResults(original, reverse);
    return 0;
}

/***************************************************
Definition of function- getInput:                  *
prompts the user to enter in a line of text to a   *
max amount of characters. Returns a pointer to the *
C-string array.                                    *
****************************************************/
char* getInput()
{
    char *originalptr;
    char original[MAX_SIZE];
    cout << "Enter a word or line of text up to a max of 20 characters\nand will     have it output in reverse!" << endl;
    cin.getline(original, MAX_SIZE);
    originalptr = original;
    return originalptr;
}

char* getReverse(char *reverseThis, int size)
{

    char* reverseOutput;
    char reverse[MAX_SIZE];
    int counter = 0;
    while(*reverseThis != '\0')
    {
        reverse[counter] = *(reverseThis + (size - counter));
        reverseThis++;
        counter++;
    }
    reverseOutput = reverse;
    return reverseOutput;

}

void displayResults(char *original, char *reverse)
{   
    cout << "\nYou originally entered: " << original << endl;
    cout << "In reverse order: " << reverse << endl;
}

最佳答案

在“getReverse”中,您在 STACK 上分配变量“reverse”,这意味着当函数返回时数据将消失,无论有多少指针引用该数据。

我会在 main 中用“char reverse[MAX_SIZE];”声明“reverse”,然后让函数接受一个参数“char reverse[]”,然后函数将修改该参数。

关于c++ - 指针和 Char 数组问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20015925/

相关文章:

c - 将不同数据类型的值按顺序写入内存?或者,具有多种数据类型的数组?

C通过引用传递字符串到函数

objective-c - 可以 stringEncodingForData :encodingOptions:convertedString:usedLossyConversion: return NSUTF16StringEncoding or NSUTF32StringEncoding?

c++ - 解码 H.264 单个最终单元

c++ - 项目中共享模型的多线程同步

c# - 你应该在什么时候理解引用文献?

c - 使数组指向另一个数组的内存 C

c - 如何在C中将字符附加到字符串数组

c++ - 带有 unordered_map 的模板代码膨胀

c# - 如果是 Windows 上的 HID 设备,如何获取供应商和产品字符串?